2014-10-13 3 views
0

knockout JS를 사용하여 SELECT HTML 태그에 몇 가지 동적 값을 바인딩하고 있습니다. 또한, 나는 실패한 선택한 선택을 설정하려고합니다. 내가 어디로 잘못 가고 있는지 제안 해주세요.선택 옵션 값 - selectedchoice가 작동하지 않습니다.

self.level1Choices.selectedChoice = ko.observable(2); - this line does not seem to work. 

이 코드에 대한 JSFiddle 드롭 다운은 어떤 이유로 JSFiddle에로드되지 http://jsfiddle.net/oarp7gwj/7/ 이다. 나는 내가 knockout JS를 올바르게 참조했다고 생각하지 않는다. 내 로컬 환경에서 값으로 선택 상자를로드 할 수 있습니다. 그러나 선택한 값을 설정할 수 없습니다.

@Wayne 엘러리는 QBM5 @ - 당신이 이미 :)

에 대해 알고 있기 때문에 조언을 바랍니다
+0

바인딩, 나는 몇 가지 잠재적 인 문제를 볼 수 있지만 그들은 당신이 제공 한 코드가 유효한지 확인하실 수 있습니다 구현하는 코드를 추가하십시오. JSFiddle을 사용하여 문제를 재현하는 것이 더 쉽습니다. – QBM5

+0

디버그가 훨씬 쉬워졌습니다.이 모든 것이 내 첫 시도입니다. Azure 모바일 서비스, 녹아웃, JS 피들, 등등. 그래서 잘하면 나는 그것을 올바르게했다. http://jsfiddle.net/az4rox0q/1/ – satishnair

+0

여기에 모델과 jsfiddle를 포함하도록 질문을 업데이트해야합니다. –

답변

0
당신은 문제

var viewModel = new DataModel(); 

주요 문제는 당신이었다 범위 지정 피하기 위해 모델 객체를 선언 VAR를 사용한다

Datamodel에서이 변수를 통해 노출함으로써 Datamodel에 추가해야합니다.

var DataModel = function (client) { 
    var self = this; 

    self.level1Choices = ko.observableArray(); 
}; 

이 작업을 수행하는 방법으로 힐로 세계의 예를 살펴 보자 : 그것은이 참조에 대해 걱정하지에 가장 좋은 방법이기로

http://knockoutjs.com/examples/helloWorld.html

나는 스스로에이 범위했습니다 여기에 언급 된 다른 내용 : http://knockoutjs.com/documentation/computedObservables.html.

DataModel 내에서 loadAllApprovers 메소드를 이동 했으므로 DataModel이 속한 곳이며 데이터 모델을 채울 수있는 권한이 있습니다. 모바일 서비스 클라이언트를 생성자에 추가하여 모델 테스트를 위해 조롱 될 수 있도록했습니다.

var DataModel = function (client) { 
    var self = this; 

    self.level1Choices = ko.observableArray(); 

    var loadAllApprovers = function() { 
     var allAppprovers = client.getTable('TABLE'); 

     var query = allAppprovers.select("ID", "FirstName").read().done(function (approverResults) { 
      self.level1Choices(approverResults); 
     }, function (err) { 
      console.log("Error: " + err); 
     });  
    }; 

    loadAllApprovers(); 
}; 

당신은 또한 jsfiddle에서 녹아웃을 놓쳤습니다.

http://jsfiddle.net/az4rox0q/6/

+0

감사합니다 @Wayne Ellery. 문제를 해결했습니다. 나는 Knockout, JS 등에 상당히 익숙하다. 따라서 상세한 코드는 매우 유용하다. 셀렉트 박스를로드하는 올바른 방법은 self.level1Choices.push입니다. 아니면 더 쉽고 편한 방법이 있습니까? – satishnair

+0

self.level1Choices.push는 괜찮습니다. 모든 배열을 배열에로드하고 싶다면 self.level1Choices (approverResults);를 사용할 수 있습니다. 대답을 수락하십시오. –

관련 문제