0

Я использую нокаут с раскрывающимся шаблоном модуля. Я хочу перейти к наблюдаемому по ссылке и иметь его значение на основе вычисленного. Эта проблема заключается в том, что она не попадает в шаблон по ссылке ... похоже, что она передается по значению.настройка нокаута, вычисленная в шаблоне модуля отображения javascript

listPersonClientSelect isableable(), и я хочу передать это в js-функцию и установить вычисляемый расчет на listPersonClientSelect (вы можете видеть в приведенном ниже коде, что я прохожу в наблюдаемом как параметр в init, и я хочу установить это наблюдаемое значение вычисленного на основе изменений в select2Data()

функции инициализации называется следующим .... так что конечный результат

self.assigneePersonSetupKO.listPersonClientSetup действительно показывает результат из расчета, однако, что я действительно хочу, это self.assignees(), чтобы показать изменения (значение вычисленного)

Можно ли передать self.assignees в js, показывающий поглаживание ссылкой?

self.assigneePersonSetupKO = new PersonSetupKO(); 
 
self.assigneePersonSetupKO.init(self.assignees);

var PersonSetupKO = function() { 
 
    "use strict"; 
 
    
 
    //var self = this; 
 
    var select2Data = ko.observable(''), 
 
     initialOptions = [], 
 
     initialSelectedOptions = [],   
 
     listPersonClientSelect = ko.observable(), 
 
       
 
     init = function (listPersonClientSelect) { 
 
      this.initialOptions = $.map(listPersonClientSelect(), function (item) { 
 
       return { DisplayName: item.DisplayName(), Gen: item.Id() } 
 
      }); 
 

 
      this.initialSelectedOptions = $.map(listPersonClientSelect(), function (item) { 
 
       return item.Gen(); 
 
      }); 
 

 
      this.select2Data($.map(listPersonClientSelect(), function (item) { 
 
       return { text: item.DisplayName(), id: item.Id() }; 
 
      })); 
 

 
      
 
      this.listPersonClientSelect = ko.computed(function() { 
 
       var results = $.map(select2Data(), function (item) { 
 
        return { 
 
         DisplayName: ko.observable(item.text), 
 
         Id: ko.observable(item.id) 
 
        } 
 
       }); 
 
       return results; 
 
      }); 
 
     }; 
 

 
    return {  
 
     init: init, 
 
     select2Data: select2Data, 
 
     initialOptions: initialOptions, 
 
     initialSelectedOptions: initialSelectedOptions, 
 
     listPersonClientSelect: listPersonClientSelect 
 
     
 
    }; 
 

 
};

ответ

0

Наблюдаемые всегда передаются по ссылке. Таким образом, init получает ссылку на исходное наблюдаемое. Вам просто нужно написать ему:

this.updateListPersonClientSelect = ko.computed(function() { 
    var results = $.map(select2Data(), function (item) { 
     return { 
      DisplayName: ko.observable(item.text), 
      Id: ko.observable(item.id) 
     } 
    }); 
    listPersonClientSelect(results); 
}); 
+0

Я был так близок :) спасибо. – David

Смежные вопросы