我有一个具有以下属性的控制器:
App.MyController = Ember.ArrayController.extend({
isSomething: false,
notSomething: Ember.computed.not('isSomething')
}
由于某些原因,当我在调试器中查看控制器时,我在“自己的属性”部分中定义了isSomething
,但后来也作为“App.MyController”中的属性。在“App.MyController”中,调试器声称isSomething
被“它自己的属性覆盖”,我猜它是,但我是如何进入这种状态的?
在旁注中,notSomething
计算属性以 false 开头,并且当我在“自己的属性”中更改isSomething
的值时不会更改(我可以'在“App.MyController”部分中更改它。
更新
好吧,它似乎比上面的代码更复杂。我仍然在黑暗中,但这就是我能说的......
MyController
是一个数组控制器,其中每一行都显示一个View,该View在引用notSomething
属性的模板中有条件。 {{#if notSomething}}
那么上面提到的属性的覆盖不会发生,但我认为这是因为它正在查看属性的视图...确实改变了控制器中的notSomething
变量无效。{{#if controller.notSomething}}
,则上述 生效。希望这有点帮助。任何帮助将不胜感激。
更新2
通过在调试器中查看控制器,我的意思有些混乱。这是一个希望澄清的截图:
请注意,实际的类名是UomsController(不是MyController
),但代码片段是直接表示。
答案 0 :(得分:2)
我认为你在这里看到的是以下内容。当您调用Ember.ArrayController.extend
时,您正在向其传递包含默认值的哈希值。您可以在App.UomsController / App.MyController下的调试器中看到这些值。 您会看到类的实例的默认值/模板。在Own properties
部分中,您可以看到班级实例的实际值。因此,在控制器上设置属性后,您会看到实际值。所以这对我来说很好,你不必担心: - )
<强> TL; DR 强>
“自有属性”部分显示了类实例的值,而名为Controller的部分显示了传递给extend
方法的默认值。