我有一个对象集合(MyApp.instrsController,一个ArrayController),每个对象都有一个名为'action‘(浮点数)的属性,如何使用handlebars模板显示它?
下面是我尝试过的代码:
<ul>
{{#each MyApp.instrsController}}
<li>{{action}}</li>
{{/each}}
</ul>但由于'action‘是一个’关键字‘,它会抛出javascript运行时错误'options is undefined’。
在进阶时谢谢。
发布于 2012-05-30 10:34:18
您可以手动指定要在当前上下文中查找属性,方法是在属性名称前面加上this.
{{this.action}}发布于 2012-05-30 17:34:16
如果无法更改属性名称,则可以在模型对象中使用计算属性,请参见http://jsfiddle.net/pangratz666/4ZQM8/
Handlebar
<script type="text/x-handlebars" >
<ul>
{{#each App.controller}}
<li>{{actionProp}}</li>
{{/each}}
</ul>
</script>JavaScript
App.Object = Ember.Object.extend({
actionProp: function() {
return this.get('action');
}.property('action')
});
App.controller = Ember.ArrayController.create({
content: [],
addObj: function(number) {
this.pushObject(App.Object.create({
action: number
}));
}
});如果没有自定义模型对象,则可以在CollectionView上使用计算属性,请参见http://jsfiddle.net/pangratz666/r6XAc/
Handlebar
<script type="text/x-handlebars" data-template-name="item" >
{{actionProp}}
</script>JavaScript
Ember.CollectionView.create({
contentBinding: 'App.controller',
itemViewClass: Ember.View.extend({
templateName: 'item',
actionProp: function(){
return this.getPath('content.action');
}.property()
})
}).append();发布于 2012-05-30 21:26:39
我强烈建议您更改属性的名称。您正在花时间处理一个不是您的领域核心的问题。
YAGNI。接吻。
在编程中要学到的最大的一课是如何制定和完成事情,而不是如何操纵javascript,使其不会对保留关键字的使用提出质疑。如果你没有一个看起来很难理解的脆弱的解决方案,你以后会更快乐
由于这是一个浮点数,我可以建议您使用"actionLevel“吗?
https://stackoverflow.com/questions/10809185
复制相似问题