(@lazyberezovsky은 "이름"그의 대답에 속성을 보여로) 현재 있음.
솔직히 말하자면, 당신의 모델은 솔직히 말하면 관측 가능한 공장처럼 행동하며 관측 대상을 포함하지 않고 관측 대상을 생성한다는 점에서 매우 이상한 설정을 가지고 있습니다.
var viewModel = function(data){
var self = this;
self.Test = ko.observable();
self.load = function(data) {
if (data) {
self.Test({ name: ko.observable(data.name) });
}
};
self.load(data);
};
var data = { name: 'Matt' };
ko.applyBindings(new viewModel(data));
HTML :
모델 (예를 설명하기 쉽게된다 어디 잘못된 길을 가고있다) : 우리가 같은보다 전통적인 접근 방식에 모델을 변경 한 경우
:
<!-- Once inside this markup, the scope changes to the things contained
inside of Test(). Therefore your aliasing needs to look like the following -->
<div data-bind="with: Test">
<div data-bind="text: name"></div>
<input data-bind="value: name, valueUpdate: 'afterkeydown'"></input>
</div>
JsFiddle : 여기
이 예제를 입증하는 jsfiddle입니다
설명
: 바인딩과에 대한 설명서를주의 할
그것은 중요 : 바인딩과
새로운 바인딩 컨텍스트를 생성 따라서 하위 객체 은 지정된 객체의 컨텍스트에서 바인딩됩니다.
... 와
을 같이 바인딩과를 사용하는 이유 이탤릭체 부분은 설명합니다 동적으로 관련 지을 수 있었던 값이/null로 정의 여부에 따라 하위 요소를 추가하거나 제거 할 구속력 여부를 내 관측 할 수있는 Test()
이 null이거나 정의되지 않은 경우 예제에서 오류가 발생하지 않습니다. 프레임 워크는 모든 자손 요소를 동적으로 제거하여이 상황을 처리합니다. 이것은 내 jsfiddle에서 시연됩니다.
또한 속성 내에 객체에 name
속성을 지정 했으므로 명시 적으로 바인딩 할 수 있습니다.속성 자체에 바인딩을 사용하고 있다면 속성으로 바인딩하려고하는 해킹에 빠지게되므로 명시 적으로 IMO 속성을 사용하는 것이 가장 좋습니다.
도움이 되었기를 바랍니다.