Angular 在Nativescript中获取对象形式ObservalArray
我有一个服务类,它有一系列任务,如下所示:Angular 在Nativescript中获取对象形式ObservalArray,angular,typescript,nativescript,Angular,Typescript,Nativescript,我有一个服务类,它有一系列任务,如下所示: import { ObservableArray, ChangedData } from 'tns-core-modules/data/observable-array/observable-array'; quests: ObservableArray<Quest>; 在另一个类中,我订阅该数组的更改事件: this.myService.quests.on(ObservableArray.changeEvent,(args:Chang
import { ObservableArray, ChangedData } from 'tns-core-modules/data/observable-array/observable-array';
quests: ObservableArray<Quest>;
在另一个类中,我订阅该数组的更改事件:
this.myService.quests.on(ObservableArray.changeEvent,(args:ChangedData<Quest>) => {
console.log(args.object);
let quest: Quest = args.object; // can not cast to quest
});
this.myService.quests.on(observeArray.changeEvent,(args:ChangedData)=>{
console.log(args.object);
让quest:quest=args.object;//不能强制转换到quest
});
在日志中,我可以看到我的数据在ChangeData
中。但我却无法将这一点抛回到我的目标上
我怎样才能做到这一点
谢谢我为您找到了解决方案。问题是打字。它不会显示您需要的属性。因此,只需将其设置为
any
,基本上您需要执行以下操作:
this.myService.quests.on(ObservableArray.changeEvent, (args: any) => {
console.log(args.index);
//the item which was added
console.log(this.myService.quests.getItem(args.index));
//now you can cast it
let quest = <Quest>this.myService.quests.getItem(args.index);
console.log(args.action); // Action (In this case "add")
});
结果如下:
JS: 0 //this is index
JS: {
JS: "name": "test1"
JS: }
JS: add //this is the action
JS: 1
JS: {
JS: "name": "test2"
JS: }
JS: add
我为你找到了解决办法。问题是打字。它不会显示您需要的属性。因此,只需将其设置为
any
,基本上您需要执行以下操作:
this.myService.quests.on(ObservableArray.changeEvent, (args: any) => {
console.log(args.index);
//the item which was added
console.log(this.myService.quests.getItem(args.index));
//now you can cast it
let quest = <Quest>this.myService.quests.getItem(args.index);
console.log(args.action); // Action (In this case "add")
});
结果如下:
JS: 0 //this is index
JS: {
JS: "name": "test1"
JS: }
JS: add //this is the action
JS: 1
JS: {
JS: "name": "test2"
JS: }
JS: add
你试过
让quest=args.object
?Yes@DotNetDreamer我尝试了上述方法,并从(args:ChangedData)=>
中删除了键入内容,使其(args)=>
不工作@DotNetDreamerargs
如果类型为EventData
其对象
属性为引发事件的类型元素。因此,您无法从其对象中获取任务
。因此,只有更改检测才会通知您。您可以在这里看到这一点,您是否尝试过let quest=args.object
?Yes@DotNetDreamer我尝试了上述方法,并从(args:ChangedData)=>
中删除了键入内容,使其(args)=>
不工作@DotNetDreamerargs
如果类型为EventData
其对象
属性为引发事件的类型元素。因此,您无法从其对象中获取任务
。因此,只有更改检测才会通知您。你可以在这里看到这个,非常感谢你的努力,我稍后会试试这个@NicoS.很高兴它能帮上忙非常感谢你的努力,我稍后会试试这个@尼科斯,很高兴这有帮助