【问题标题】:Ember bind-attr not updatingEmber 绑定属性不更新
【发布时间】:2014-09-01 13:01:02
【问题描述】:

我有以下看法:

App.MyView = Ember.View.extend({
    isSet: false,
    layoutName: 'myview',
    click: function() {
        this.set('isSet', !this.get('isSet'));
    }
};

以及它的模板:

<i {{bind-attr class=":fa isSet:fa-check"}}></i> Toggle

click 事件运行良好,并更新了isSet(我可以在 ember 检查器中看到),但未添加绑定类。我的逻辑有问题吗?

【问题讨论】:

  • 您可能想在此处使用toggleProperty
  • 作为一种调试技术,您可以在模板中添加Value of isSet is {{isSet}}! 之类的内容来检查值。这可能会提示您该值没有被切换,并导致您得出需要执行view.isSet 的结论。

标签: javascript ember.js handlebars.js


【解决方案1】:

在您的模板中使用view.isSet 而不是isSet

<i {{bind-attr class=":fa view.isSet:fa-check"}}></i> Toggle

【讨论】:

  • 我以前被这个抓住了,我现在应该学会了......谢谢。
【解决方案2】:

另一种可能的解决方案,不是针对 OP 的问题,而是针对具有类似标题的问题。

当使用 bind-attr 绑定属性更改和元素类时,在 bind-attr 帮助器中包含静态类映射也很重要,而不是在单独的静态类属性中。

这并不总是有效:

<div class="round" {{bind-attr class="highlighted:hl"}}>Inner text</div>

正确的做法是:

<div {{bind-attr class=":round highlighted:hl"}}>Inner text</div>

【讨论】:

    【解决方案3】:

    如果你使用的是 ember 1.11 以上版本

    然后使用下面的标签

    参考:

    http://www.hutchinson.io/bind-attr-is-dead/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 2022-01-22
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多