【发布时间】:2014-04-23 10:41:44
【问题描述】:
我在 Ember 中定义了几个 (10+) 不同的模型并设置了资源路由。一切工作正常。尽管每个模型都有不同的属性,但我想节省编写冗余代码的时间。 让我们先从模型开始。这里有一些例子......
型号: 客户
App.Client = DS.Model.extend({
name: DS.attr('string'),
clientId: DS.attr('string'),
clientSecret: DS.attr('string'),
trustedClient: DS.attr('boolean')
});
型号: 组
App.Group = DS.Model.extend({
name: DS.attr('string'),
groupType: DS.attr('string')
});
型号: 用户
App.User = DS.Model.extend({
email: DS.attr('string'),
password: DS.attr('string'),
});
还有更多...
问题:
是否可以使用 一个(而不是 10+)把手模板来为每个属性和值组合生成标签和文本字段?
想法
我从this question here on stackoverflow 那里得到了一些想法。按照提议定义通用模板似乎已经非常有用了。
<script type="text/x-handlebars" data-template-name="general-table-output">
{{#each metadata}}
<label>{{name}}</label>
{{input valueBinding='name'}}
{{/each}}
</script>
然后我们可以使用渲染助手将模型传递给通用表输出的控制器。这是用户的示例。
<script type="text/x-handlebars" data-template-name="user">
{{render 'general-table-output' user}}
</script>
到目前为止,一切似乎都很好......但控制器似乎没有找到模型的属性。
控制器
App.GeneralTableOutput = Ember.ObjectController.extend({
metadata: function() {
var vals = [];
var attributeMap = this.get('content.constructor.attributes');
attributeMap.forEach(function(name, value) {
vals.push(value);
});
return vals;
}.property('content')
});
问题
attributeMap: undefined
你知道一种方法可以访问控制器中分配的模型并映射出所有属性/值,以便可以在通用模板中查看吗?
【问题讨论】:
标签: javascript templates ember.js handlebars.js