2017-03-17 58 views
0

我有一個從ajax請求返回的數組。我將這個數組綁定到了knockout中的observableArray。我想知道如何遍歷數組prefixeData並使每個元素的屬性都可觀察。這可能嗎?使數組中的所有屬性都可觀察

var viewModel = { 
      name: "Editor",     
      prefixeData: ko.observableArray([]),     
      getPrefixes: function (prefix) {      

       var params = { 
        "prefix": prefix 
       }; 

       $.ajax({ 

        type: "POST", 
        url: "XXXX.aspx/GetPrefixes", 
        data: JSON.stringify(params), 
        contentType: "application/json; charset=utf-8", 
        dataType: "json", 
        async: false, 
        success: function (data) { 
         var trans = data.d; 
         if (trans.Successful) { 

          viewModel.prefixeData(trans.ResultObject); 
          // this doesnt work 
          viewModel.prefixeData().forEach(function(data) { 
           data.LevelName=ko.observable(data.LevelName); 

          }); 
         } else { 
          //todo 
         } 

        }, 
        error: function (xhr, textStatus, err) { 

         alert("Status: " + textStatus); alert("Error: " + err); 

        } 

       }); 
      } 
     }; 
+2

有了一個額外的插件:http://knockoutjs.com/documentation/plugins-mapping.html –

回答

1

u需要進口knockout.mapping knockout.mapping

和編輯喜歡你的代碼:

success: function (data) { 
         var trans = data.d; 
         if (trans.Successful) { 
         var observableArray = ko.mapping.fromJS(trans.ResultObject); 
         viewModel.prefixeData(observableArray()); 
         //viewModel.prefixeData now is observableArray, you can call foreach : viewModel.prefixeData at html 
         } else { 
          //todo 
         } 

        }, 
+1

謝謝@PhillyNJ:這更清晰! –

相關問題