knockout.js - 在 TypeScript 中 knockout observableArray

标签 knockout.js typescript ko.observablearray

在 TypeScript 类中初始化 Knockout observableArray 的正确方法是什么?

我正在做这样的事情:

   module ViewModel { 

        declare var ko;

        export class IndexPageViewModel {       

                agencies: any;                   

                constructor () {               
                    this.agencies = ko.observableArray([]);              
                }                                                                                                   
        }
    }


var ivm = new ViewModel.IndexPageViewModel();
ivm.agencies.push({name: "name", alias : "alias"});
for (var i = 0; i < ivm.agencies.length; i++){
    alert(ivm.agencies[i].name);
 }

看起来很简单,但是当我尝试按照指示访问代理机构属性时,执行挂起。我错过了什么吗?

最佳答案

这一行是你的错误所在:

agencies[i]

当您访问一个可观察数组时,它实际上被包装在一个函数中,因此您可以像这样访问它:

agencies()[i]

也帮自己一个忙,从以下位置下载 Knockout 定义: https://github.com/borisyankov/DefinitelyTyped

然后用类型声明你的属性:

module ViewModel {

    export class IndexPageViewModel {

        agencies: KnockoutObservableArray;

        constructor () {
            this.agencies = ko.observableArray([]);
        }
    }
}

关于knockout.js - 在 TypeScript 中 knockout observableArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168051/

相关文章:

复选框勾选值绑定(bind)

javascript - 如何将项目从 javascript 转换为 typescript

javascript - 如何在不抛出错误的情况下从 Promise 中正确冒泡错误?

asp.net-mvc - 如何让 Knockout 将选择框的值绑定(bind)到列表项的属性

javascript - 如何在不添加更多 html 的情况下单独切换 foreach div 的 knockout ?

javascript - C# Web API 中的 JSON 数据无法正确解析

knockout.js - knockout - 如果日期大于则显示元素

javascript - Javascript 中的全局命名空间 : Migrating to TypeScript

javascript - 使用 knockout 将对象添加到可观察数组

javascript - 在 Observable KnockOutJS 中退订