backbone.js - Backbone Typescript kan inte sätta tagName


Jag håller på att sätta upp Backbone.View med Typescript. Jag vill sätta tagName till li, så jag följer TodoMVC-exemplet på typescript: https://github.com/tastejs/todomvc/blob/gh-pages/labs/architecture-examples/typescript-backbone/js/app.ts

Här är min kod:

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

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

Men VS klagar på super-anropet: Ett 'super'-anrop måste vara det första uttalandet i konstruktorn när en klass innehåller initialiserade egenskaper eller har parameter-egenskaper.

Så, min fråga är hur sätter jag tagName innan super-anropet? Finns det också ett allmänt sätt/mönster som jag kan använda för att ställa in min klass egenskap innan jag initialiserar den?

Tack

Redigera: Jag hittade denna lösning:

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

Jag vill fortfarande veta vilket som är det bästa sättet att göra detta.

Svar #1

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

Om jag inte har fel, kan du göra saker före super()-anropet så länge det inte påverkar this

Svar #2

tagName är en medlem av options-argumentet. Kan skickas vid vy-skapande.

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

Relaterade artiklar