Ember.js 如何从handlebar模板向子视图添加css类
我想从Handlebar模板向子视图添加css类。我目前收到一个错误,如下所示:Ember.js 如何从handlebar模板向子视图添加css类,ember.js,Ember.js,我想从Handlebar模板向子视图添加css类。我目前收到一个错误,如下所示: Uncaught TypeError: Object [object DOMWindow] has no method 'get' App = Ember.Application.create() App.ParentView = Ember.View.extend({ foo: 'bar', content: 'Hello', ChildView: Ember.View.extend(
Uncaught TypeError: Object [object DOMWindow] has no method 'get'
App = Ember.Application.create()
App.ParentView = Ember.View.extend({
foo: 'bar',
content: 'Hello',
ChildView: Ember.View.extend({
classNames: this.get('parentView').get('classesToAdd')
})
});
我的代码如下:
Uncaught TypeError: Object [object DOMWindow] has no method 'get'
App = Ember.Application.create()
App.ParentView = Ember.View.extend({
foo: 'bar',
content: 'Hello',
ChildView: Ember.View.extend({
classNames: this.get('parentView').get('classesToAdd')
})
});
我这里有一个JSFIDLE:
classNames属性将上下文从Ember.View转换为dom元素,这有什么特别之处吗?或者也许有其他方法可以实现这一点?我不认为您可以在ChildView的
类名声明中使用this
,因为视图对象尚未实例化
但是,您可以使用绑定。请参阅Emberjs.com上“自定义HTML元素”部分下的文档。您可以覆盖视图上的init
,以访问classesToAdd
,请参阅
把手:
<script type="text/x-handlebars">
{{#view App.ParentView}}
{{#view ChildView classesToAdd="my-class"}}
hello
{{/view}}
{{/view}}
</script>
App = Ember.Application.create()
App.ParentView = Ember.View.extend({
foo: 'bar',
content: 'Hello',
ChildView: Ember.View.extend({
init: function() {
this._super();
var classes = this.get('classesToAdd');
this.set('classNames', Ember.makeArray(classes));
}
})
});
实际上我已经试过了。我已经设置了classNamesBinding,但又出现了一个错误。谢谢。这基本上就是我想要实现的。我想把把手模板弄干。这里有一个更加枯燥的JSFIDLE:-不需要在模板中声明childView。需要注意的一点是:我后来意识到,通过更具创造性地使用css选择器,我可以达到同样的效果。(只需在parentView上声明一个类,然后沿着div.my-class div{{#…css attributes}行创建一个选择器即可)。但这使我的css更干净。需要注意的是,这样设置类会破坏子视图的事件处理,因为常规的ember视图类不会添加到类名数组中,而是替换了该数组。下面是一个可能的解决方案的更新版本:下面是对该问题的进一步讨论: