4
我很努力使这个基本功能在Ember中工作。我如何通过计算属性填充Ember.Select视图的选项,该属性观察通过另一个Ember.Select设置的另一个属性?如何通过基于另一个Ember.Select的选定选项的计算属性来填充Ember.Select选项
这是我到目前为止已经完成:
HTML/HBS:
<script type="text/x-handlebars">
{{view Ember.Select
content=parent
optionValuePath="content.id"
optionLabelPath="content.name"
value=current_parent}}
{{view Ember.Select
content=child
value=current_child}}
</script>
的Javascript:
App.ApplicationController = Ember.ArrayController.extend({
content: '', current_parent: null, current_child: null,
parent: function() {
return this.store.find('user');
}.property(),
child: function() {
var current_parent = this.get('current_parent');
if (current_parent) {
this.store.find('user', current_parent).then(function(parent) {
return parent.get('children');
}
}
}.property('current_parent')
});
App.User = DS.Model.extend({
name: DS.attr('string'),
children: DS.attr(),
});
从服务器返回JSON:
users: [{id: 0, name: 'test', children: ['child1', 'child2']}]
和显然这是行不通的。我希望能够解释我在哪里出错,请问可行的方法是什么。
我使用下列库:
- 灰烬1.4.0
- 灰烬数据1.0.0-beta.6
- 把手1.3.0
在此先感谢!
辉煌,是的,我们可以确实使用用户模型。这实际上有效!非常感谢米格尔。这是工作代码的[jsbin](http://jsbin.com/zilaz/2/)。但是为什么使用父ID不能在计算的子属性中工作? – ashraf
@Ashraf它应该工作。我建议使用丰富的模型,而不是id,因为它看起来更简单,所以我错过了原始代码的问题。你没有返回任何东西,所以它始终保持未定义状态。这是嵌套回调和异步代码的常见问题。你正在返回'then',它将值返回给回调函数,但不返回属性。你还应该'返回store.find(....'。这应该修复原始代码(未经测试)。如果你有充分的理由去使用id,我会将current_parent重命名为current_parent_id,因为前者意味着它是一个模型 –