Knockout observableArray in TypeScript

后端 未结 2 1412
春和景丽
春和景丽 2021-02-15 16:14

What is the proper way to initialize a Knockout observableArray in a TypeScript class?

I am doing something like this:

   module ViewModel { 

        de         


        
相关标签:
2条回答
  • 2021-02-15 16:56

    I just did this in TypeScript 1.3 (though it should work in older versions too):

    pendingAddAssociations: KnockoutObservableArray<ControllerModel> = ko.observableArray<ControllerModel>([]);
    

    for your example, if you have an Agency class.

    export class IndexPageViewModel {
    
            agencies: KnockoutObservableArray<Agency>;
    
            constructor () {
                this.agencies = ko.observableArray<Agency>([]);
            }
        }
    

    I've also found that you can cast to any this.agencies = <any>[]; This is useful if you are using the Knockout ES5 plugin.

    0 讨论(0)
  • 2021-02-15 17:08

    This line is where your mistake is:

    agencies[i]
    

    When you access an observable array, it is actually wrapped in a function so you do access it like:

    agencies()[i]
    

    Also make yourself a favor and download the Knockout definitions from: https://github.com/borisyankov/DefinitelyTyped

    Then declare your attributes with types:

    module ViewModel {
    
        export class IndexPageViewModel {
    
            agencies: KnockoutObservableArray;
    
            constructor () {
                this.agencies = ko.observableArray([]);
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题