1

这里的文档:

http://emberjs.com/guides/views/customizing-a-views-element/

讨论将类名绑定到视图中的真/假值。有没有办法将我的模型属性之一绑定到视图类名称?

例如

App.Category = DS.Model.extend({
    name:  DS.attr('string'),
    type: DS.attr('string'),  // The loaded model could have a type of 'typeA' or 'typeB'
});

App.CategoryView = Ember.View.extend({
   classNameBindings: ['type'],
   type: function(){
       return this.model.get('type'); // This doesn't work obviously
   },
   tagName: 'li'
});

会渲染

<li class="typeA"> [template_contents_are_here] </li>

编辑:使用 Ember 1.0rc

编辑 2

所以我更进一步,现在可以从我的函数返回一个值。然而,它只在我的第一次迭代中返回正确的值。我从服务器加载了一系列模型,每个模型都使用 {{control}} 帮助器进行渲染(因此为每次渲染创建一个新视图和控制器)

App.CategoryView = Ember.View.extend({
       classNameBindings: ['type'],
       type: function(){
           return this.controller.get('model.type');
       }.property()
       tagName: 'li'
   });
4

1 回答 1

1

我更新了你的小提琴:http: //jsfiddle.net/mavilein/hutYc/8/

定义计算属性时,需要声明它依赖的属性:

App.CategoryView = Ember.View.extend({
   classNameBindings: ['type'],
   type: function(){
       return this.get('context.type');
   }.property("context.type"),
   tagName: 'li'
});

请注意,我用一种更“修饰”的方式替换了您访问 type 属性的方式。视图应始终根据其上下文工作。

于 2013-02-24T21:43:25.883 回答