在ember模板中使用数组Notation获取Object属性

时间:2014-09-22 10:06:25

标签: javascript ember.js handlebars.js

只是尝试一些但不知道该怎么做。

场景: - 我正在尝试渲染一个包含配置数据和查看数据的页面,所以基本上我的模板循环配置数据以呈现页面并从视图数据中获取值以显示。

所以我的模型有类似

的东西
 model:{'confData':[{'displayName':'value1','fieldName':'Field1'},
                    {repeat similar object}
                   ],
        'viewData':{'Field1':'value1','Field2':'value2',....}
        }

现在在模板中我试图渲染:

{{#each confData}}
  this.displayName {{input type='text' value=viewData[this.fieldName] }}
{{/each}}

但它不接受它。关于如何处理这类问题的任何建议。

PS:实际应用中的confdata和view数据将是api调用,我无法更改。 我看到http://jsfiddle.net/GRaa5/4/之类的东西,但当我尝试更改为http://jsfiddle.net/weyzay5v/时失败了。

感谢。

1 个答案:

答案 0 :(得分:1)

没有办法纯粹用Handlebars做你想做的事。请记住,Handlebars模板是无逻辑的,仅用于演示。我的建议是在你的控制器中创建一个计算属性:

data: function() {
    var confData = this.get('confData');
    var viewData = this.get('viewData');

    return confData.map(function(data) {
        return {
            displayName: data.displayName,
            value: viewData[data.filedName]
        };
    });
}.property('confData.[]', 'viewData')

然后在你的模板中:

{{#each data}}
    {{displayName}} {{input type='text' value=value}}
{{/each}}