Ember.Select无法观察到动态生成控件的选择变量的变化

时间:2015-01-05 02:27:14

标签: ember.js

我正在动态构建一些选择控件。我想知道选项何时发生了变化,所以我正在做以下事情:

我的想法是在selections对象上动态创建属性,用于保存选定的值。

//Add observer
Ember.defineProperty(selections, camelizedModelClass, null);
selections.addObserver(camelizedModelClass, self, 'selectionChanged');

这是选择发生变化时应该调用的函数。

selectionChanged : function(sender, key, value, rev) {
    console.log('worked!');
},

在我的模板中,我创建了Ember.Select' s。如下。

{{#each control in controls}}

        <div {{bind-attr class=":form-group control.width"}}>
            <label for="exampleInputPassword1">{{control.label}}</label>
            {{view "select"
            content=control.content
            selection=control.selection
            optionValuePath=control.optionValuePath
            optionLabelPath=control.optionLabelPath
            class = "form-control"
            prompt=control.prompt
            }}
            <p class="help-block"></p>
        </div>

{{/each}}

controls数组中的每个控件都具有以下属性。

selection: 'selections.' + camelizedModelClass,

永远不会调用观察者方法,但是,如果我手动输入选择内容,实际上是调用它。

{{view "select"
content=control.content
selection=selections.manager   <-------- manually specifying the selection
optionValuePath=control.optionValuePath
optionLabelPath=control.optionLabelPath
class = "form-control"
prompt=control.prompt
}}

为什么这不起作用?另一个奇怪的事情是,如果我将{{control.selection}}放入我的车把模板中,我可以看到第一种方法的模型正在改变,而第二种方法却没有。

1 个答案:

答案 0 :(得分:0)

尝试将Ember.SelectView selection属性更改为value

{{view 'select' value=selections.manager}}

这是一个例子。

http://emberjs.jsbin.com/boluba/1/edit