Emberjs - 使用计算属性

时间:2015-08-29 22:38:56

标签: ember.js

这就是我在模板中所拥有的:

{{check-box isChecked=hasPhoneForSecureAlerts visibleLabelLoc=".t.settingscontact.label.phone" class="checkbox-inline narrow" testId="chk-phone"}}

这是我在控制器中拥有的属性:

hasPhoneForSecureAlerts: Em.computed.bool('securePreferences.phoneLocalNumber'),

我们假设,最初此属性设置为true并选中复选框,如果取消选中复选框,则此属性设置为false,实际上与securePreferences.phoneLocalNumber的状态不对应。

要将其设置为初始值,当我们离开此屏幕而不保存时,我只是在相应路径的resetController中使用:

controller.set('hasPhoneForSecureAlerts',     controller.get('securePreferences.phoneLocalNumber') !== null);

这段代码是否正确?它实际上工作正常,但我发现在Emberjs文档中的任何地方都是这样的。谢谢!

1 个答案:

答案 0 :(得分:1)

我不是100%确定您的代码是什么样的,但我认为您的问题与使用Em.computed.bool有关。在这种情况下,我会使用Ember.computed.alias代替我创建一个JSBin来证明它有效。如果你还有问题,请告诉我。

编辑:

好的,我想我现在意识到你要做的事情。正如你所注意到的,这确实有效,但我可能会重新考虑你的方式,因为一个复选框被设计为与之交互,你正在做什么似乎非常不自然。我会为你的复选框使用一个单独的变量,并使其成为一个属性。这样,只要复选框更改值,您的property()函数就会运行。如果复选框从已选中更改为未选中,则您可以清除已存储的电话号码。我不确定当复选框从未选中复选到检查时你想要发生什么。这就是为什么我觉得使用复选框是一个有点奇怪的决定。也许你可以创建一个最小的jsFiddle来演示你打算发生什么?