称呼
我一直在尝试找到一种方法来编辑 Ember.Select 框,而无需实际手动选择值而是在内部编辑它们。我的 Ember.Select 看起来像这样:
{{view Ember.Select
contentBinding="Et.router.availablePhasesController"
optionValuePath="content.id"
optionLabelPath="content.label"
selectionBinding="a.selectedPhase"
}}
可用PhasesController 如下所示:
Et.AvailablePhasesController = Ember.ArrayController.extend({
content: [
{ id: 1, label: "1" },
{ id: 2, label: "2" },
{ id: 3, label: "3" }
]
});
当我从选择框中选择这些值时,这一切都很好,但我的问题是,我可以以某种方式更改 Ember.Select 创建的选择元素上的值,它会触发绑定,这意味着我的“a.selectedPhase”还将获得用于更改选择元素的值。
我尝试将 jQuery 与 .val() 和 .attr("value") 一起使用,但这只会影响 UI 而不会触发绑定,这意味着选择框有值但没有“a.selectedPhase”
我还尝试扩展 Ember.Select 视图,发现它有一个变量“值”,它存储当前值并根据绑定进行更新,但我找不到任何用处。我创建了观察者来观察这个值何时发生变化,但这并没有帮助,因为它仅在我手动选择一个新值时才发生变化。
总而言之,有没有办法通过某种方式触发 selectionBinding,而不是直接更改绑定中的变量或通过 UI?
编辑:我按照评论中的要求创建了一个 jsfiddle:http: //jsfiddle.net/y52Pc/2/
您可以看到绑定工作正常,如果您使用选择框选择不同的选项,它将正确更新。我还设置了两个按钮,一个使用 Ember.set 方法,这也可以正常工作并触发绑定。另一个使用 jQuery.val() 的方法只会影响 UI 而不会触发绑定。
我正在寻找的是用其他方式触发绑定的其他方式,然后是 .set 或通过选择选择框手动触发。
编辑 2:我在这里添加了一种通过 jQuery 触发绑定的更新方法:http: //jsfiddle.net/y52Pc/3/ 这似乎解决了问题!