이것은 선택이다 생성시기에 따라 예상치 못한 방법으로 관찰에 영향을 미치는 선택 :KnockoutJS는 선택이
<div class="pull-left" data-bind="if: existingPackagingLevels().length > 0 && activateSelect() == true">
<h4>Unique container</h4>
<select data-bind="enable: inUniqueContainerEditMode,
options: containers,
optionsText: function(container){ return container.name() + ' ' + container.type() },
optionsValue: 'id',
value: existingPackagingLevels()[0].uniqueContainerId,
optionsCaption: '--Select--'"></select>
<button data-bind="visible: inUniqueContainerEditMode() == false, click: editUniqueContainer"><i class="icon-pencil"></i></button>
<button data-bind="visible: inUniqueContainerEditMode, click: saveNewUniqueContainer">save</button>
<button data-bind="visible: inUniqueContainerEditMode, click: cancelNewUniqueContainer">cancel</button>
</div>
나는 아약스와 함께 existingPackagingLevels 변수를로드합니다. 배열의 첫 번째 요소에는 uniqueContainerId가 있거나 없을 수 있습니다. 선택한 컨테이너를 표시하려면 existingPackagingLevels [0] .uniqueContainerId()! = undefined 또는 "--Select--"옵션을 표시하십시오.
문제 :
<div class="pull-left" data-bind="if: existingPackagingLevels().length > 0">
이 선택은 기본적으로 덮어 내 existingPackagingLevels [0] .uniqueContainerId()하고 정의되지 않은 있습니다 : 나는 선택 만이 검사를 통과 한 후 생성 할 때. 그래서 다른 수표 "activateSelect() == true"를 추가하면 지연된 후에 true가 표시되기 시작합니다. 100ms의 지연으로 반 그리고 반 작동합니다. 시간의 절반은 값을 겹쳐 쓰며 정의되지 않은 값으로 설정하고 예상 한 시간의 절반 정도를 설정하여 uniqueContainerId에 해당하는 컨테이너를 표시합니다. 지연이 커지면 항상 작동합니다.
그럼 내가 속임수로 연기하지 않고 어떻게 작동 시키나요?