Javascript 为什么绑定到另一个余烬对象不起作用?
我已经建立了一个简单的余烬绑定示例,我认为它应该可以工作: 为什么控制器的isTrue属性与模型的isTrue属性不同步?不寻找任何“把东西放在窗户上是不好的做法”之类的东西(除非这实际上是打破窗户的原因);我在这里寻找理解 我的阅读使我确信它应该这样工作。有人能解释一下我可能解释错了什么吗 除非这是破坏它的真正原因 这就是破坏它的原因。绑定仅适用于Ember对象<代码>窗口不是余烬对象。路径错误也有一个问题,下面是一个图表:Javascript 为什么绑定到另一个余烬对象不起作用?,javascript,ember.js,Javascript,Ember.js,我已经建立了一个简单的余烬绑定示例,我认为它应该可以工作: 为什么控制器的isTrue属性与模型的isTrue属性不同步?不寻找任何“把东西放在窗户上是不好的做法”之类的东西(除非这实际上是打破窗户的原因);我在这里寻找理解 我的阅读使我确信它应该这样工作。有人能解释一下我可能解释错了什么吗 除非这是破坏它的真正原因 这就是破坏它的原因。绑定仅适用于Ember对象窗口不是余烬对象。路径错误也有一个问题,下面是一个图表: if isTrueBinding is "appController.
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中,使用绑定绑定到全局对象并不是一种好的风格——最佳实践是使用依赖注入来访问共享对象。如果您发现自己需要使用全局绑定,这可能是您需要重构的迹象
除非这是破坏它的真正原因
这就是破坏它的原因。绑定仅适用于Ember对象<代码>窗口不是余烬对象。路径错误也有一个问题,下面是一个图表:
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中,使用绑定绑定到全局对象并不是一种好的风格——最佳实践是使用依赖注入来访问共享对象。如果您发现自己需要使用全局绑定,这可能是您需要重构的迹象
除非这是破坏它的真正原因
这就是破坏它的原因。绑定仅适用于Ember对象<代码>窗口不是余烬对象。路径错误也有一个问题,下面是一个图表:
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中,使用绑定绑定到全局对象并不是一种好的风格——最佳实践是使用依赖注入来访问共享对象。如果您发现自己需要使用全局绑定,这可能是您需要重构的迹象
除非这是破坏它的真正原因
这就是破坏它的原因。绑定仅适用于Ember对象<代码>窗口不是余烬对象。路径错误也有一个问题,下面是一个图表:
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中,使用绑定绑定到全局对象并不是一种好的风格——最佳实践是使用依赖注入来访问共享对象。如果您发现自己需要使用全局绑定,这可能是您需要重构的标志。但是appController是一个ember对象吗?我没有绑定到Window的属性事实上,这甚至不是唯一被破坏的东西。绑定是相对于您在其中声明它们的对象的。因此,到
appController.isTrue
的绑定指向window.mod.appController.isTrue,而您需要的属性位于window.appController.isTrue。即使你可以通过窗口对象绑定(你不能),它也不会工作,因为路径错误似乎暗示它是一个全局路径指南很混乱,我已经提交了一个。这非常有用。你能详细说明当它们以大写字母开头时会发生什么吗?但是appController是一个余烬对象吗?我没有绑定到Window的属性事实上,这甚至不是唯一被破坏的东西。绑定是相对于您在其中声明它们的对象的。因此,到appController.isTrue
的绑定指向window.mod.appController.isTrue,而您需要的属性位于window.appController.isTrue。即使你可以通过窗口对象绑定(你不能),它也不会工作,因为路径错误似乎暗示它是一个全局路径指南很混乱,我已经提交了一个。这非常有用。你能详细说明当它们以大写字母开头时会发生什么吗?但是appController是一个余烬对象吗?我没有绑定到Window的属性事实上,这甚至不是唯一被破坏的东西。绑定是相对于您在其中声明它们的对象的。因此,到appController.isTrue
的绑定指向window.mod.appController.isTrue,而您需要的属性位于window.appController.isTrue。即使你可以通过窗口对象绑定(你不能),它也不会工作,因为路径错误似乎暗示它是一个全局路径指南很混乱,我已经提交了一个。这非常有用。你能详细说明当它们以大写字母开头时会发生什么吗?但是appController是一个余烬对象吗?我没有绑定到Window的属性事实上,这甚至不是唯一被破坏的东西。绑定是相对于您在其中声明它们的对象的。因此,到appController.isTrue
的绑定指向window.mod.appController.isTrue,而您需要的属性位于window.appController.isTrue。即使你可以通过窗口对象进行绑定(你不能),它也不起作用,因为路径错误似乎意味着它是一个全局路径。指南很混乱,我已经提交了一个。这非常有用。你能详细说明当它们以大写字母开头时会发生什么吗?