2016-06-16 6 views
0

녹아웃을 사용하면보기 모델을 변경하면보기가 업데이트되지만보기를 업데이트해도보기 모델이 업데이트되지 않습니다. 단방향 바인딩을 설정할 수 있습니까?모형에서보기로 녹아웃 단방향 바인딩

라우팅 엔진을 사용하여 URL에서 매개 변수를 가져오고, 소스에서 데이터를 가져오고, 뷰 모델을 채우고 양식 (보기)을 채 웁니다. 그러나 사용자가 양식 값을 변경할 때보기 모델을 업데이트하고 싶지 않습니다. 양식을 "제출"하여 URL을 업데이트하면 라우팅 엔진이 트리거됩니다.

키 바인딩 당 뷰 모델 data-bind="value: MyValue"을 업데이트 한 data-bind="textInput: MyValue"은 양식 요소가 포커스를 잃을 때 뷰 모델을 업데이트합니다 (data-bind="attr: {value: MyValue}"). 초기 바인딩에서 작동하지만보기 모델의 값을 변경하면보기가 업데이트되지 않습니다.

내가 원하는대로 할 수있는 기본 바인딩이 있습니까? 다른 접근법?

감사합니다!

답변

2

녹아웃으로 속성을 실행하면 바인딩은 편도/읽기 전용이됩니다. 그래서 예를 들어 다음과 같은 모델 :

var Person = function(data){ 
    var self = this; 
    self.FirstName = ko.observable(data.FirstName); 
    self.LastName = ko.observable(data.LastName); 
    self.FullName = ko.computed(function(){ 
     return self.FirstName() + " " + self.LastName() 
    }); 
} 
myData = { FirstName: "John", LastName: "Smith" } 
var me = new Person(myData); 

ko.applyBindings(me); 
나는/FIRSTNAME에게 한 가지 방법을 간단하게 바인딩에서 그것을 실행하여 전용 속성을 읽을 수

: 첫 번째 입력은 값을 가져옵니다 그래서 지금

<input data-bind="value: FirstName()"> 
<input data-bind="value: LastName"> 
<label data-bind="text: FullName"></label> 

그것을 설정할 수는 없지만 두 번째 입력은 양방향 바인딩을 가지며 LastName 속성을 업데이트합니다.

+0

완벽하게 작동했습니다. 감사합니다. 배우는 것이 너무나 ... – AndrewP