2013-06-03 47 views
0

我有靜態方法"objectToMyObject"轉換對象屬性爲MyObject屬性objectToMyObject。 我在嘗試將「objectToMyObject」更改爲「mapping.fromJS(data)」。但我不能確定這一點。 Hom執行這個問題?Knockout映射ko.mapping.fromJS

// 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); 
      } 
     }); 
} 

回答

0

我改變了你的代碼。正如你所看到的,它總是用成功參數調用回調函數。

在您的代碼中,「if(!data.succeeded)」語句將始終返回false。如果您要檢查的「成功」的值,你應該這樣寫:「如果(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);

我希望它有幫助

+0

謝謝你,達米安。我如何用mapping.fromJS替換「objectToMyObject」。我沒有「objectToMyObject」方法 – zrabzdn

+0

我根據你的問題修改了我的帖子。 – Damien

+0

謝謝Damien.I嘗試ko.mapping.fromJS(this,{},data);但我有錯誤:屬性'映射'不存在'敲除'類型的值。如果我嘗試( ko).mapping.fromJS(this,{},data);在Chrome控制檯中,我有新的錯誤:Uncaught TypeError:無法調用未定義的方法'fromJS' – zrabzdn

相關問題