2012-03-28 2 views
1

안녕하세요, stackoverflow 커뮤니티에 전합니다.jquery로 업데이트 필드가 관찰 가능을 업데이트하지 않습니다.

며칠 전에 녹아웃을 사용하기 시작했습니다.

바로 제가 알고있는 CMS에 대한 동적 메뉴 빌더를 만드는 데 사용하고 있습니다. http://jsfiddle.net/dnlgmzddr/HcRqn/

문제는 내가 선택 상자에서 요소를 선택하면, 나는 예상대로 입력 필드 업데이트,하지만 관찰이 변화를 반영하지 않는다는 것입니다 : 여기

는 코드입니다. 따라서 추가 버튼이 활성화되어 있지 않습니다.

무엇이 누락 되었습니까? 어떻게 해결할 수 있습니까?

감사합니다.

답변

8

, 당신은 upated 될 관찰을 얻기 위해 변경 이벤트를 트리거해야합니다. 그래서, 당신은 할 수있다 :

$("#url").val('/pages/' + id).change(); 

더 많은 것은 녹아웃 정신에 더 많은 것이지만 당신의 선택에 바인딩을 사용하는 것입니다. 이 경우 관측 대상에 해당 값을 채우고 수동 구독을 사용하여 서식이 지정된 값을 입력 필드에 기본값으로 지정해야 할 수 있습니다.

다음
<select id="pagedList" data-bind="value: selectedUrl"> 
     <option value=""><option> 
     <option value="test">Test</option> 
    </select> 

는 샘플입니다 :

this.itemUrl = ko.observable(); 
this.selectedUrl = ko.observable(); 
this.selectedUrl.subscribe(function(newValue) { 
    if (newValue) { 
     this.itemUrl("/pages/" + newValue);     
    } 
}, this); 

다음, 당신의 선택 selectedUrl에 바인딩 또한 여분의 관찰 및 수동 등록을 제거 할 수 http://jsfiddle.net/rniemeyer/HcRqn/21/

경우 옵션의 "값" url이었습니다.

1

필드가 선택되었을 때 실제로 단추를 활성화하는 코드는 어디에도 없습니다. 그래서 나는 뭔가를 놓치고있을 수도 있지만 버튼을 변경하기 만하면됩니다. 마찬가지로 다음 : URL이 필드를 채울 때

function LoadMenu() { 
    $("#pagedList").change(function() { 
     var id = $(this).val(); 
     $("#url").val('/pages/' + id); 
     // remove the disabled attribute here 
     $('button.space').removeAttr('disabled'); 
    }); 
} 
관련 문제