나는 Knockout에서 신규입니다. 나는 예제에서 찾을 수있는 한 가지 트릭을 이해할 수 없다. 여기 내 코드. 나는 3 명의 사용자를 만들었고, 아래는 제 3의 사용자를 만들 때 내 처리 결과를 보여줍니다. 넉 아웃 JS - 계산 된 값
// It's my view
<div id="page-container">
<input type="text" data-bind="value: usernameInput" />
<button data-bind="click: addPerson">Добавить</button>
<ul data-bind="foreach: users">
<li data-bind="text: username"></li>
</ul>
</div>
<script>
// It's my UserModel
function UserModel(username, callback){
console.log('Start creating object...');
var self = this;
self.username = ko.observable(username);
self.updateCallback = ko.computed(function(){
console.log('updateCallback: ' + self.username());
callback(self);
return true;
});
};
// It's my ViewModel
function ViewModel(){
var self = this;
self.users = ko.observableArray([]);
self.usernameInput = ko.observable('');
self.addPerson = function(){
var u = self.usernameInput();
var um = new UserModel(u, self.update);
self.users.push(um);
console.log('Item Pushed');
self.usernameInput('');
console.log('Users Collection: ' + self.users());
};
self.update = function(item){
console.log('Update: ' + item.username());
ko.utils.arrayFilter(self.users(), function(it) {
});
};
};
ko.applyBindings(new ViewModel(), document.getElementById('page-container'));
그것은 내 콘솔 출력의
.Start creating object...
updateCallback: 3
Update: 3
updateCallback: 1
Update: 1
updateCallback: 2
Update: 2
updateCallback: 3
Update: 3
Item Pushed
Users Collection: [object Object],[object Object],[object Object]
내가
Start creating object...
updateCallback: 3
Update: 3
을 이해 해요하지만이 부분 난 updateCallback 컨텍스트의 업데이트 방법 안에이 함수를 호출 할 때 : 모든 들어
ko.utils.arrayFilter(self.users(), function(it) {
});
계산 된 updateCallback 3 회 사용자 ...
누구나 "손가락에"왜 설명 할 수 있습니까? 답장을 사전에 이런 일이 ... 감사합니다 ...
f_martinez
계산하여 updateCallback가 전체 사용자 observableArray에 따라 달라집니다 때문입니다. 이 종속성은 암시 적 보일 수 있지만, 콜백을 통해 (자기) 만들어지는; ...을
예 ...이 종속성은 암시 적입니다 ...하지만이 종속성은 아직 나를 위해 분명하지 않다
때 루프 업데이트을 다음과 같이 사용하십시오. for (var i in self.users()) {} 모든 사용자에 대해 updateCallback이 3 번 계산됩니다 ...하지만 루프를 제거하고 세 번째 사용자를 생성하면 ... 이 출력 만 가져옵니다.
Start creating object...
updateCallback: 3
Update: 3
Item Pushed
Users Collection: [object Object],[object Object],[object Object]
계산하여
updateCallback
가 전체
users
observableArray에 의존하기 때문에 10
나는
안녕하세요, f_martinez ... 내 게시물 위에 다시 읽어주세요. 제발 ... 몇 가지 질문을 추가하십시오 ... –
내 대답이 업데이트되었습니다. –