2017-03-17 2 views
0

Ich habe ein Array von einer Ajax-Anfrage zurück. Ich verbinde dieses Array mit einem ObservableArray in Knockout. Ich würde gerne wissen, wie ich über das Array prefixeData iterieren und jede der Eigenschaften des Elements beobachtbar machen kann. Ist das möglich?Machen Sie alle Eigenschaften in einem Array beobachtbar

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

Mit einem zusätzlichen Plugin: http://knockoutjs.com/documentation/plugins-mapping.html –

Antwort

1

u brauchen Import knockout.mapping knockout.mapping

und bearbeiten Sie den Code wie:

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

danke @PhillyNJ: das ist klarer! –

Verwandte Themen