Data binding 如何将模型属性绑定到视图类

Data binding 如何将模型属性绑定到视图类,data-binding,ember.js,handlebars.js,Data Binding,Ember.js,Handlebars.js,此处的文档: 讨论将类名绑定到视图中的真/假值。 有没有办法将我的一个模型属性绑定到视图类名 比如说 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({

此处的文档:

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

比如说

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>
我更新了你的小提琴:

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

App.CategoryView = Ember.View.extend({
   classNameBindings: ['type'],
   type: function(){
       return this.get('context.type');
   }.property("context.type"),
   tagName: 'li'
});
注意我用一种更“emberish”的方式替换了您访问type属性的方式。视图应始终根据其上下文工作。

我更新了您的小提琴:

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

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

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

您能在JSFIDLE中重现它吗?可以。你能把我和ember rc1的一个工作版本的小提琴联系起来,让我用叉子吗?我看过一些,但没有一个有效。编辑:Nevermind-找到一个:您也可以在“报告Bug”部分找到jsFiddle/jsbins:这可能与@Wildhoney花费了一些时间,但这里是这样的:您可以在jsFiddle中复制它吗?可以。你能把我和ember rc1的一个工作版本的小提琴联系起来,让我用叉子吗?我看过一些,但没有一个有效。编辑:Nevermind-找到一个:您也可以在这里的“报告Bug”部分找到jsfiddles/jsbin:这可能与:@Wildhoney花了一些时间,但这里说:谢谢!我想这可能与某种比赛条件有关。视图是在模型绑定到控制器之前创建的吗?首先创建视图。我猜然后属性被计算并被缓存(计算属性被缓存)。之后控制器/模型连接到视图。谢谢!我想这可能与某种比赛条件有关。视图是在模型绑定到控制器之前创建的吗?首先创建视图。我猜然后属性被计算并被缓存(计算属性被缓存)。之后,控制器/模型连接到视图。