2014-02-10 5 views
0

self.material (관찰 가능)에서 함수 내에서 값을로드하려고 할 때 문제가 있습니다. 선택 항목에 값으로 observable을로드하려고하면 정의되지 않은 것으로 표시됩니다. data.materialNumber에는 문자열 값이 있고 self.materials가 올바르게로드됩니다. 어떤 도움을 주시면 감사하겠습니다!knockout 값이 함수에 설정되지 않았습니다.

나는 코드 만 필요에 포함하려고합니다

...

내 HTML :

<select class="materialSelect" data-placeholder="Choose Material..." 
           data-bind="options: materials, 
          value: material, 
          optionsText: function (item) { return item.description }, 
          optionsValue: function (item) { return item.materialNumber }, 
          chosen: materials, 
          chosenOptions: { width: '250px', search_contains: true }"></select> 

내 JS :

function Mrs() { 

var self = this; 


self.materials = ko.observableArray(); 
self.material = ko.observable(""); 


bom.hubs.mrs.server() 
    .getMaterialsForAuthorizedPlants(lastSection) 
    .done(function (data) { 
     data.materials.unshift({}); 
     self.material(data.materialNumber); 
     self.materials(data.materials); 
    }); 
}; 
(function (bom) { 
    "use strict"; 

    bom.hubs.done(function() { 
     ko.applyBindings(new Mrs()); 
    }); 

})(bom); 
+0

문제를 보여주는 jsfiddle을 만들 수 있습니까? 문제가 실제로 발생한 것을보다 쉽게 ​​확인하고 제안 된 해결 방법이 실제로 문제를 해결하는지 확인할 수 있습니다. –

+0

로버트, 읽고 읽고 주셔서 감사합니다. 다음에 필자가 가질 수있는 문제를 제출하면, 나는 그것을 설정할 것입니다. – mindboggd

답변

0

TL; DR 할당 self.materials 전에 self.material


옵션 바인딩은 선택한 옵션을 값과 동기화하려고 시도하지만 self.material을 할당 할 때 옵션이 없으므로 재료 값을 다시 정의되지 않은 값으로 다시 설정합니다.

self.materials를 설정하면 옵션이 다시 작성되지만 self.material은 이제 정의되지 않습니다.

지정을 바꾸면 재료 관찰 가능이 설정되었을 때 선택 옵션을 사용할 수 있습니다.

+0

이것은 효과가 있습니다! 정말 고마워요! – mindboggd