Backbone Typescript无法设置tagName

时间:2013-12-23 20:32:21

标签: backbone.js typescript

我正在使用Typescript设置Backbone.View。我想将tagName设置为li,所以我遵循打字稿的TodoMVC示例:https://github.com/tastejs/todomvc/blob/gh-pages/labs/architecture-examples/typescript-backbone/js/app.ts

这是我的代码:

constructor(options?: any) {
    this.tagName = 'li';

    super(options);    
    this.template = AppData.template['Query/QueryItemViewTpl'];    
}

然而,VS抱怨超级调用:当一个类包含初始化属性或具有参数属性时,'super'调用必须是构造函数中的第一个语句。

所以,我的问题是如何在超级调用之前设置tagName?另外,在初始化之前,我是否可以使用一般方法/模式来设置我的类属性?

由于

编辑:我找到了解决方法:

initialize() {
    ...   
    this.setElement($("<li />"));    
    ...
}

我仍然想知道哪种方法最好。

3 个答案:

答案 0 :(得分:2)

constructor(options: any = {}) {
    options.tagName = 'li';
    super(options);
}

如果我没有弄错,只要不影响super()

,您就可以在this来电前做事。

答案 1 :(得分:1)

tagName是options参数的成员。可以在视图创建时传递它。

var myView = new MyView({tagName: "li"})

答案 2 :(得分:0)

super(_.extend(options, {className: 'col-md-6', tagName: 'div'}));