0

我有一个具有以下属性的控制器:

App.MyController = Ember.ArrayController.extend({
   isSomething: false,
   notSomething: Ember.computed.not('isSomething')
}

出于某种原因,当我在调试器中查看控制器时,我已经isSomething在“Own Properties”部分定义了,但后来又作为“App.MyController”中的一个属性。在“App.MyController”中,调试器声称isSomething“被它自己的属性覆盖”,我猜是这样,但我是如何进入这种状态的?

附带说明一下,notSomething计算的属性以false开始,并且当我更改isSomething“自己的属性”中的值时不会更改(我无法在“App.MyController”部分更改它)。

更新

好的,它似乎比上面的代码更复杂。我仍然在黑暗中很漂亮,但这是我能说的......

  1. 这是一个数组控制器,其中每一行都显示一个视图,该视图在引用该属性MyController的模板中具有条件。notSomething
  2. 如果条件语句声明为,{{#if notSomething}}则不会发生上述对属性的覆盖,但我认为那是因为它正在视图中查找属性......实际上更改notSomething控制器中变量的值没有效果。
  3. 如果条件语句是这样,{{#if controller.notSomething}}那么上面提到的确实生效。

希望这会有所帮助。任何帮助将不胜感激。

更新 2

我在调试器中查看控制器的意思有些混乱。这是一个希望澄清的屏幕截图:

请注意,实际的类名是 UomsController (不是MyController),但代码片段是直接表示。

4

1 回答 1

2

我认为您在这里看到的是以下内容。当您调用时,Ember.ArrayController.extend您正在将包含默认值的哈希传递给它。您可以在 App.UomsController/App.MyController 下的调试器中看到这些值。在那里,您可以看到类实例的默认值/模板。在该部分Own properties中,您会看到类实例的实际值。因此,在控制器上设置属性后,您会在那里看到实际值。所以这对我来说很好,你不必担心:-)

TL;DR “Own properties”部分显示了类实例的值,而名为 Controller 的部分显示了您传递给extend方法的默认值。

于 2013-09-24T14:31:13.933 回答