如何从具有动态可观察属性的knockout对象获取JSON字符串?

时间:2016-04-28 13:43:08

标签: javascript json knockout.js typescript

使用打字稿的变量声明

variableName: any;

构造

constructor(private _data?: IInterface) {
    if (_data) {            
    this.variableName = this.tokoObservable(_data.variableName); 
    }
}

tokoObservable FN

private tokoObservable(data: string): ko.Observable<any> {
    let obj = data? JSON.parse(data) : { };
    let output = ko.observable<any>({});

    for (let prop in obj) {
        output[prop] = ko.observable<any>(obj[prop]);            
    } 

    return output;
}

解释

此代码创建可观察的属性并将它们放入variableName。

这些属性是可观察的,因此当我更改内容时,它们会更新。

当我想要查看整个对象的JSON时,问题出现了。

ko.toJSON(variableName)

返回空{}

然而

ko.toJSON(variableName.propertyName())

返回属性的值。

我想要的是返回整个对象的JSON字符串

{"propertyName": "propertyValue}

1 个答案:

答案 0 :(得分:0)

以下是我所做的改变,使其能够发挥作用。

private tokoObservable(data: string): any {
    let obj = data? JSON.parse(data) : {};
    let output = {};

    for (let prop in obj) {
        output[prop] = ko.observable<any>(obj[prop]);            
    } 

    return output;
}