javascript - 如何根据另一个 Ember.Select 的选定选项通过计算属性填充 Ember.Select 选项

标签 javascript ember.js ember-data

我正在努力让这个基本功能在 Ember 中运行。我如何通过观察通过另一个 Ember.Select 设置的另一个属性的计算属性填充 Ember.Select View 的选项?

这是我到目前为止所做的:

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']}]

显然这是行不通的。请解释我哪里出错了,以及实现它的可行方法是什么,我将不胜感激。

我正在使用以下库:

  • Ember 1.4.0
  • Ember 数据 1.0.0-beta.6
  • Handlebars 1.3.0

提前致谢!

最佳答案

我认为您不需要派生属性 child。除了使用 id 作为值,您还可以使用模型本身(一个用户),它已经具有 children 的属性。这与您已经在使用 current_parent 而不是 current_parent_id 的名称相匹配。

{{view Ember.Select
contentBinding=parent
optionLabelPath="content.name"
value=current_parent}}

{{view Ember.Select
contentBinding=current_parent.children
value=current_child}}

在 Controller 上只需删除子属性。

希望这对您有所帮助。

关于javascript - 如何根据另一个 Ember.Select 的选定选项通过计算属性填充 Ember.Select 选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21959335/

相关文章:

javascript - 在 Android 上强制正确的 CSS3 转换百分比解释

ember.js - Ember 数据1.0.0 : confused with per-type adapters and serializers

javascript - Emberjs 过滤选择集合更新

ember.js - Ember cli 适配器为类型设置自定义路径

ember.js - Ember 数据有很多只加载在 canonicalState 属性中的记录

javascript - 在新窗口中打开链接,如果已经打开则聚焦到它

javascript - 具有属性的函数的 JS 表达式

javascript - 如何在JS中使用重音字符等特殊字符?

javascript - 即使没有嵌套路由,Ember Rails 后退按钮也不会渲染模板

javascript - Ember 数据 ajax 调用