为什么这个绑定仅适用于我改变值的前三次?

时间:2015-07-22 16:40:22

标签: javascript ember.js

请考虑以下代码段:



var ITEMS = ["Item 1", "Item 2"]

window.App = Ember.Application.create();
window.App.ApplicationController = Ember.Controller.extend({
    sItems: ITEMS,
    sValue: ITEMS[0],
    sLabel: Ember.computed('sValue', function() {
        return this.get('sValue') == ITEMS[0] ?
            "You picked item 1!" :
            "You picked item 2!";
    })
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://builds.emberjs.com/tags/v1.13.5/ember.min.js"></script>
<script src="http://builds.emberjs.com/release/ember-template-compiler.js"></script>

<script type="text/x-handlebars">
    {{view "select" content=sItems value=sValue}}
    {{sLabel}}
</script>
&#13;
&#13;
&#13;

<select>的值更改三次后,它不再触发对sValue属性的更改。因此,标签不再发生变化。

我已经能够在OS X上的Chrome和Safari,Windows 8.1上的IE11以及Linux上的Firefox和Chromium中重现这一点。 (您应该能够通过运行上面的代码段来重现它。)

我做错了什么?

修改:这似乎是在Ember.js v1.13.4中引入的a known bug

2 个答案:

答案 0 :(得分:1)

在Ember 1.13中不推荐使用{{view 'select'}}视图助手(以及views)。

阅读Deprecation Guide: Ember.Select了解详细信息和可能的解决方法。

另见Deprecation Guide: Ember.View

答案 1 :(得分:1)