0

オブジェクトのプロパティをプロパティ "objectToMyObject"に変換する静的メソッドがあります。" " を " " に変更しようとしています。しかし、私はそれを決定することはできません。Hom はこの問題を実装しますか? MyObjectobjectToMyObjectobjectToMyObjectmapping.fromJS(data)

// My get method:
 getMyObject(url: string, params: any, onSuccess: () = > {}, onError: (message: string) = > {}) {
     this.invokeAjax(url, params, (data) = > {
             if (!data.succeeded) {
                 onError(data.error);
             } else {
                 this.editMyObject(MyObject.objectToMyObject(data));
                 //this.editMyObject(<any>this.editMyObject((<any>ko).mapping.fromJS(data)));
                 onSuccess();
             }
         });
 }



 // My invoke method:
 invokeAjax(url: string, params, callback: (result: any) = > {}) {
     $.ajax({
             url: url,
             type: 'GET',
             data: params,
             dataType: 'json',
             cache: false,
             success: (data) = > {
                 callback(data);
             },
             error: (data) = > {
                 this.succeeded(false);
             }
         });
 }
4

1 に答える 1

0

コードを変更しました。ご覧のとおり、常に成功パラメーターを指定してコールバック関数を呼び出します。

あなたのコードで "if(!data.succeeded)" ステートメントは常に false を返します。「成功」の値を確認したい場合は、「if(!data.succeeded())」と書く必要があります。

// My get method:
 getMyObject(url: string, params: any, onSuccess: () = > {}, onError: (message: string) = > {}) {
     this.invokeAjax(url, params, (data, success) = > {
             if (!success) {
                 onError(data.error);
             } else {
                 ko.mapping.fromJS](vm /*your view model (may be this)*/, {}, data)
                 //this.editMyObject(MyObject.objectToMyObject(data));
                 //this.editMyObject(<any>this.editMyObject((<any>ko).mapping.fromJS(data)));
                 onSuccess();
             }
    });
 }



 // My invoke method:
 invokeAjax(url: string, params, callback: (result: any, success : any) = > {}) {
     $.ajax({
             url: url,
             type: 'GET',
             data: params,
             dataType: 'json',
             cache: false,
             success: (data) = > {
                 callback(data, true);
             },
             error: (data) = > {
                 callback(data, false);
             }
    });
 }

あなたの最初の質問に対する私の答え

コードの早い段階で、ko.applyBindings(vm) を呼び出して、ビュー モデルをビューにバインドしました。これで、ajax コールバックから更新されたデータを受け取ったら、ko.mapping.fromJS (vm, {}, data);を呼び出すことができます。

役立つことを願っています

于 2013-06-03T09:15:16.687 に答える