Q:

Bind datas in ember

I have an datas array with some objects :
dataArray: [
    {name: 'n1', b: 2, c: 3},
    {name: 'n2', b: 5, c: 6},
    {name: 'n3', b: 8, c: 9}
]

I initilize it empty dataArray: Ember. A([]) and push datas in this object with pushObject( Ember.Object.create( dataItem ) )
And a complex nested array where each of my objects can appear zero or multiple times.  This array is loaded from a server and used for display purpose in a template.  It can looks like that :
displayedArray: [
    [
        {name: 'n2'},
        {name: 'n3'},
        [
            {name: 'n1'},
            {name: 'n2'},
            {name: 'n3'},
        ]
    ]
    {name: 'n3'},
    {name: 'n1'}
]

The key / value pairs of each objects in my datas array is updated after async callas to a server.  I need to update all the objects in my display array when my data object is updated by injecting / deleting or updating the key / value pairs. 
I think I should use something like that : http://emberjs.com/guides/object-model/bindings/
But I cannot figure out how to use it in my case. 

A:

If you store your data in ember objects and follow the ember get/set paradigm, then all changes on your data will be reflected to your template.  For example,
http://emberjs.jsbin.com/OMItuCiN/1
hbs
<script type="text/x-handlebars">
    <h2>Welcome to Ember.js</h2>

    {{outlet}}
  </script>

  <script type="text/x-handlebars" data-template-name="index">
  {{#if data}}
    <ul>
    {{#each item in data}}
      <li>{{item.name}}</li>
    {{/each}}
    </ul>
    <button {{action 'update'}}>update data</button>
    {{else}}
    loading....
    {{/if}}
  </script>

js
App = Ember.Application.create();

App. Router.map(function() {
  // put your routes here
});

App. IndexRoute = Ember.Route.extend({
  setupController:function(controller,model){
    asyncUpdate(controller);
  }
});

App. IndexController = Ember.Controller.extend({
  data:[],
  actions:{
    update:function(){
      this.set('data',[]);
      asyncUpdate(this);
    }
  }
  /*namedEntities:function(){
    return data;
  }.property('data.@each.name')*/
});

App. NamedEntity =  Ember.Object.extend({
  name:null
});

function asyncUpdate(controller){
  /*get data from server*/
    setTimeout(function(){
      var data=[];
      var dataFromServer = '[{"name": "n'+Math.round(Math.random()*10)+'", "b": 2, "c": 3},{"name": "n'+Math.round(Math.random()*10)+'", "b": 5, "c": 6},{"name": "n'+Math.round(Math.random()*10)+'", "b": 8, "c": 9}]';
      JSON.parse(dataFromServer).forEach(function(namedEntity){
        data.pushObject(App. NamedEntity.create({name:namedEntity.name}));
      });
      controller.set('data',data);
    },2000);
}

If you have a complex structure of data you need to accomodate that in ember object relationships. 
In your case if you turn your data to a simple array, as I think you have already done, then the example above should help.  Otherwise if your arrays belong in different groups then try to create ember objects representing these groups containing array of children ember objects and so on.