2014-01-23 34 views
4

我目前有问题预选多选视图中的项目。我使用了ember-data 1.0.0 beta 6和ember-data-django-rest-adapter的ember 1.3。Ember - 使用hasMany属性时,如何在多选中预先选择项目?

App.Article = DS.Model.extend({ 
    title: attr(), 
    description: attr(), 
    authors: hasMany('author') 
}); 

App.ArticleRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.store.find('article', params.article_id); 
    }, 
    setupController: function(controller, model) { 
    controller.set('content', model); 
    } 
}); 

App.ArticleController = Ember.ObjectController.extend({ 
    needs: ['authors'], 
    allAuthors: function() { 
    return this.store.find('author'); 
    }.property() 
}); 

模板:

{{input authors as='select' 
    multiple='true' 
    collection='allAuthors' 
    selection='authors' 
    optionValuePath='content.id' 
    optionLabelPath='content.name'}} 

我不知道为什么,这是行不通的,因为当使用#each模板I输出allAuthors作者,我越来越我应该的数据。

有什么我想念的吗?

在此先感谢您的帮助。

+0

您没有使用Ember.Select视图的任何特定原因?它似乎更适合你想要的东西。 http://emberjs.com/api/classes/Ember.Select.html – GJK

+0

我切换到查看Ember.Select,但它的行为方式相同。谢谢你给我另一件事尝试。 –

+0

那么,你遇到的问题是什么?输入是选择正确的项目? – GJK

回答

0

我通常使用一个承诺预填充这种数据的途径:

App.ArticleRoute = Ember.Route.extend({ 
    model: function(params) { 
    return this.store.find('article', params.article_id); 
    }, 
    setupController: function(controller, model) { 
    this.store.find('author').then(function(authors) { 
     controller.set('allAuthors', authors); 
     // or maybe controller.get('allAuthors').addObjects(authors); 
    }); 
    controller.set('content', model); 
    } 
}); 

App.ArticleController = Ember.ObjectController.extend({ 
    needs: ['authors'], 
    allAuthors: [] 
}); 

不知道这是要做到这一点的最好办法,但它是为我工作。

相关问题