2013-04-03 1 views
0

Я пытаюсь добавить расширитель ко всем моим наблюдаемым в моей модели просмотра. мои данные поступают с сервера, поэтому я не могу указать свойства один за другим.Как добавить расширитель к каждому наблюдаемому в режиме просмотра нокаута?

Я пробовал это, но он не работает, я использую расширитель logChange с веб-страницы jockout js для этого примера.

var addingExtender = { 
    key: function (data) { 
     return data.id; 
    }, 
    create: function(options) { 
      return ko.observable(true).extend({ logChange: "Value Changed" }); 

    } 
}; 
ko.mapping.fromJS(data, addingExtender, self); 
+1

Look @ http://stackoverflow.com/questions/11325352 – beauXjames

ответ

2

В результате я создал функцию для добавления расширителя по одному.

function addStorage(koViewModel,name) { 
    for (var observableKey in koViewModel) { 
     if (ko.isObservable(koViewModel[observableKey]) 
     && !isObservableArray(koViewModel[observableKey])) { 

      koViewModel[observableKey].extend({ persist: name === undefined ? 
        url + observableKey : url + name +  "." + observableKey }); 
     } 

     if (typeof koViewModel[observableKey] === "object") { 
      for (var observables in koViewModel[observableKey]) { 
       if (ko.isObservable(koViewModel[observableKey][observables]) 
       && !isObservableArray(koViewModel[observableKey][observables])) { 

        koViewModel[observableKey][observables].extend({ persist: url + 
          observableKey + "." + observables }); 
       } 
      } 
     } 
    } 
}