我已经设置了一个我认为应该有效的 Ember 绑定的简单示例:http://jsbin.com/aBekITeT/1/edit
为什么控制器的 isTrue 属性与模型的属性不同步?不要寻找任何"把东西放在窗户上是不好的做法"之类的东西(除非这实际上是破坏它的东西);我在这里寻找理解。
我对 http://emberjs.com/guides/object-model/bindings/的阅读使我相信它应该以这种方式工作。有人可以解释我可能解释错误的地方吗?
除非这真的是破坏它的原因
这才是真正打破它的原因。绑定仅适用于 Ember 对象。 window
不是余烬对象。还有一个路径错误的问题,这是一个图表:
if isTrueBinding is "appController.isTrue", This will:
this won't work
+--------------+ +--------------+
| | | |
+-------+| window |+-----+ | window |
| | | | | |
| +--------------+ | +--------------+
v v +
+---------------+ +--------------+ |
| appController | | mod | |
|---------------| |--------------| v
| isTrue | |isTrueBinding | +--------------+
| | | | | mod |
| | | | |--------------|
| | | | |isTrueBinding |
| | | | |appController |+---> +---------------+
| | | | | | | appController |
| | | | | | |---------------|
| | | | | | | isTrue |
+---------------+ +--------------+ | | | |
| | | |
| | | |
+--------------+ | |
| |
| |
i.e. bindings are implicitly pointing to "this", | |
unless they start with a capital letter. +---------------+
当绑定以大写字母开头时,引用全局对象,例如:
window.Currency = Em.Object.create({
"USD": "$"
});
App.MyObject = Em.Object.extend({
currencyBinding: "Currency.USD"
});
但是,在 Ember 中使用绑定绑定到全局对象并不被认为是好的风格 - 最佳做法是使用依赖注入来访问共享对象。如果您发现自己需要使用全局绑定,这可能是您需要重构的迹象。