如何在ember中动态启用/禁用链接

时间:2016-03-13 18:41:06

标签: ember.js

我有这个链接到将根据属性" linkDisabled"启用/禁用。最初该属性为true,此链接将被禁用。

{{#link-to "databinding2" disabled=linkDisabled}}Databinding2{{/link-to}}

每当我点击此按钮时,我想切换禁用和启用之间的链接,而不重新加载任何组件。

 <button {{action 'changeLinkState'}} >Click here</button>

这就是我想在控制器中处理它的方式。

App.ApplicationController=Ember.Controller.extend({
linkDisabled:true,
actions:{
    changeLinkState:function(){
        if(this.linkDisabled==true)
        {
            this.linkDisabled=false;
        }
        else
        {
            this.linkDisabled=true;
        }
    }
}

});

是否可以在不进行异步调用的情况下这样做?
由于属性linkDisabled正在{{#link-to}}中使用,因此,当我尝试将其修改为true或false时,它会抛出错误。

Uncaught Error: Assertion Failed: You must use Ember.set() to set the `linkDisabled` property (of <App.ApplicationController:ember294>) to `false`.

做正确的方法是什么?

2 个答案:

答案 0 :(得分:4)

截至Ember 3. *方法是:

{{!-- Statically --}}
{{link-to 'photoGallery' disabled=true}}

{{!-- Dynamically --}}
{{link-to 'photoGallery' disabledWhen=controller.someProperty}}

Source in Ember API Docs

答案 1 :(得分:2)

如果你坚持使用set / get:

Ember.set(this, 'linkDisabled', !(Ember.get(this, 'linkDisabled')));

但我建议您使用Ember.Object.toggleProperty()API link here,尝试类似:

this.toggleProperty('linkDisabled');