gpt4 book ai didi

javascript - Computed.alias 不更新绑定(bind)属性

转载 作者:行者123 更新时间:2023-11-30 17:38:27 24 4
gpt4 key购买 nike

我最近开始使用 Ember.js。在我的小应用程序中,我目前遇到关于 Ember.computed.alias 的问题,因为 {{#if}} 部分已正确更新,但 bind-同一模板中的 attr 助手未相应更新。

应用程序 Controller 和影响值的操作如下所示:

App.ApplicationController = Ember.ObjectController.extend({
isEditing: false,
actions: {
toggleEdit: function() {
var a = this.get('isEditing');
this.set('isEditing', !a);
}
}
});

Controller 负责处理引起问题的模板:

App.CategoriesController = Ember.ArrayController.extend({
needs: ['application'],
isEditing: Ember.computed.alias('controllers.application.isEditing'),
general: function() { // example depending on the alias
var result = this.filterBy('type', 1);
if (!this.get('isEditing')) {
result = result.filterBy('isHidden', false);
}
return result;
}.property('@each.type', '@each.isHidden', 'isEditing'),
// ......

相关模板:

<ul id="categories">
{{#if isEditing}}YES!{{else}}NO!{{/if}}
{{#each general}}
<li {{bind-attr class=":general isEditing:editing"}}>
{{name}}
</li>
{{/each}}
</ul>

当 Action toggleEdit 被触发时,{{#if}} 部分被更新并在 YES!NO! 之间交换,但 editing 类不适用于列表元素。我尝试根据别名将别名封装到 Controller 的另一个属性中,但没有成功。

我认为这是初学者的错误,但我无法弄清楚我忽略了什么。

谢谢你的期待。

最佳答案

isEditing 不再在范围内,请使用 controller.isEditing,抱歉电话回复

这是一个将其限制在范围内的示例,但我完全限定它只是为了向您展示。

{{#each item in general}}
<li {{bind-attr class=":general controller.isEditing:editing"}}>
{{item.name}}
</li>
{{/each}}

关于javascript - Computed.alias 不更新绑定(bind)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com