Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 在TypeScript中删除array_Knockout.js_Typescript_Ko.observablearray - Fatal编程技术网

Knockout.js 在TypeScript中删除array

Knockout.js 在TypeScript中删除array,knockout.js,typescript,ko.observablearray,Knockout.js,Typescript,Ko.observablearray,在TypeScript类中初始化淘汰ObservalArray的正确方法是什么 我正在做这样的事情: module ViewModel { declare var ko; export class IndexPageViewModel { agencies: any; constructor () {

在TypeScript类中初始化淘汰ObservalArray的正确方法是什么

我正在做这样的事情:

   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);
 }
模块视图模型{
宣布var ko;
导出类IndexPageViewModel{
代理机构:任何;
构造函数(){
本机构=ko.observearray([]);
}                                                                                                   
}
}
var ivm=new ViewModel.IndexPageViewModel();
推送({name:“name”,别名:“alias”});
对于(变量i=0;i

看起来很简单,但当我尝试访问代理属性时,执行会挂起。我错过什么了吗?

这一行就是你的错误所在:

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

agencies()[i]
另外,帮个忙,从以下网站下载淘汰定义:

然后用类型声明属性:

module ViewModel {

    export class IndexPageViewModel {

        agencies: KnockoutObservableArray;

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

我只是在TypeScript1.3中这样做的(尽管它在旧版本中也应该可以工作):

pendingAddAssociations:knockoutobservearray=ko.observearray([]);
例如,如果你有一个代理类

export class IndexPageViewModel {

        agencies: KnockoutObservableArray<Agency>;

        constructor () {
            this.agencies = ko.observableArray<Agency>([]);
        }
    }
导出类IndexPageViewModel{

agencies:KnockoutObservalArray。

就这样,谢谢。另外感谢您提供了指向所有Typescript定义的链接。实际上,访问ObservalArray并不完全一致。如果您使用此.agencies().push(管理)将项目添加到集合中,则不会触发更改通知。但是如果您这样做了。agencies.push(管理),通知被激发。@KNji它是一致的。如果调用此.agents上的方法,则访问数组周围的KO包装器。因此,将记录任何更改并激发事件。如果调用此.agents()解析可观察对象,因此将得到底层数组。直接在该数组上推送对象将绕过KO框架,因此不会触发任何更改事件。
export class IndexPageViewModel {

        agencies: KnockoutObservableArray<Agency>;

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