如何从handlebar模板向子视图添加css类

时间:2012-03-15 00:04:21

标签: ember.js

我想从一个把手模板中为子视图添加一个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({
        classNames: this.get('parentView').get('classesToAdd')
    })
});

我在这里有一个jsfiddle:http://jsfiddle.net/sohara/PKMTn/2/

classNames属性有什么特别的东西可以将上下文从Ember.View转移到dom元素吗?或者也许还有其他方法可以达到这个目的?

2 个答案:

答案 0 :(得分:2)

您可以覆盖视图上的init以访问classesToAdd,请参阅http://jsfiddle.net/WCjda/1/

<强>车把:

<script type="text/x-handlebars">
    {{#view App.ParentView}}
       {{#view ChildView classesToAdd="my-class"}}
            hello        
       {{/view}}
    {{/view}}
</script>​

<强> JavaScript的:

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));
        }
    })
});​

答案 1 :(得分:0)

我认为您不能在{Child}的this声明中使用classNames,因为视图对象尚未实例化。

但是,您可以使用绑定。请参阅Emberjs.com上“自定义HTML元素”部分下的文档。