Ember.js 余烬,根据条件禁用输入

Ember.js 余烬,根据条件禁用输入,ember.js,handlebars.js,ember-rails,Ember.js,Handlebars.js,Ember Rails,我有一个余烬表单,我想根据用户禁用输入。 我从后端获得一个可修改字段数组 我如何让它与灰烬一起工作? 理想的情况是这样做 {{input type="text" disabled=isModifiable("middleName") value=middleName}} 我知道那是不可能的。 对于余烬来说,这是一个全新的概念,建议将不胜感激。谢谢。在控制器或组件中定义如下属性: fields:[], loadFields : function(){ var that = this; $.g

我有一个余烬表单,我想根据用户禁用输入。 我从后端获得一个可修改字段数组

我如何让它与灰烬一起工作? 理想的情况是这样做

{{input type="text" disabled=isModifiable("middleName") value=middleName}}
我知道那是不可能的。
对于余烬来说,这是一个全新的概念,建议将不胜感激。谢谢。

在控制器或组件中定义如下属性:

fields:[],
loadFields : function(){
 var that = this;
 $.get(FIELDS_API).done(function(serverResponse){
    //process server response in an array with objects with this form:
    // [ field:"middleName", isDisabled:true}]

   that.set("fields",fieldsArray);
 })
}
isModifiable : function(fieldName){
 var field = this.get("fields").findBy("field",fieldName);
 return (field) ? field.isDisabled: false;
},
isMiddleNameInputDisabled : function(){
    return this.isModifiable("middleName");
}.property("fields.@each")
{{input type="text" disabled=isMiddleNameInputDisabled  value=middleName}}
在模板中使用该属性,如下所示:

fields:[],
loadFields : function(){
 var that = this;
 $.get(FIELDS_API).done(function(serverResponse){
    //process server response in an array with objects with this form:
    // [ field:"middleName", isDisabled:true}]

   that.set("fields",fieldsArray);
 })
}
isModifiable : function(fieldName){
 var field = this.get("fields").findBy("field",fieldName);
 return (field) ? field.isDisabled: false;
},
isMiddleNameInputDisabled : function(){
    return this.isModifiable("middleName");
}.property("fields.@each")
{{input type="text" disabled=isMiddleNameInputDisabled  value=middleName}}

谢谢,但我有大约20个不同的领域。我发现创建20个不同的方法名是多余的。无论如何,您可以创建一个自定义组件来扩展输入视图并获取fieldName参数。组件应该决定输入是否被禁用。{{custom input type=“text”fieldName=“middleName”value=middleName}}好的。如果我想对任何类型的输入执行此操作,该怎么办?那么选择框、日期选择器、文本区域等呢?Ember.js尊重关注点的分离(数据、逻辑和UI代码都位于不同的区域)。这就是为什么我建议对每个字段使用属性。不应在模板中实现逻辑。