하는 경우를 I 올바르게 이해하고 있습니다. 현재 다음과 같은 내용이 있습니다.
<div id='myDiv'>
current status is: <span id='statusSpan'>Active</span>
</div>
같은 것을 할 수있는 몇 가지 해당 자바 스크립트와
:
function toggleStatus() {
var s= document.getElementById('statusSpan');
s.innerHTML = s.innerHTML == 'Active' ? 'Inactive' : 'Active';
}
그리고 자바 스크립트는 DOM을 조작보다는 뷰 모델을 업데이트되도록 당신이 그것을 변경하려면?
var app = (function() {
var vm = {
statusText: ko.observable('Active'),
toggleStatus: toggleStatus
}
return vm
function toggleStatus() {
vm.statusText = vm.statusText == 'Active' ? 'Inactive' : 'Active';
}
})();
ko.applyBindings(app,document.getElementById('myDiv'));
그리고 당신이 무슨 말을하는지 있다면 다음 HTML을
<div id='myDiv'>
current status is: <span id='statusSpan' data-bind="text: statusText"></span>
</div>
것, 즉 녹아웃을 위해 설계되었습니다거야. javascript는 viewmodel을 업데이트하고 knockout은 DOM을 조작합니다.
제공 한 예는 녹아웃에서 쉽게 나타낼 수 있습니다.
되는 HTML :
<div>
<table data-bind="foreach: products">
<tr>
<td data-bind="text: id"></td>
<td data-bind="text: name"></td>
<td data-bind="text: category"></td>
</tr>
</table>
</div>
와 뷰 모델에 :
vm = {
products: ko.observableArray(), // empty array to start
addProduct: addProduct
}
return vm;
function addProduct(id, name, category) {
products.push({id: id, name: name, category:category});
}
등
나는 당신이 무엇을 요구 확실하지 않다. 당신은 당신의 데이터로부터 관측 가능 물을 만드는 방법을 찾고 있습니까? 아니면 KO 뷰 모델에서 현재 코드를 '감싸려고'하시겠습니까? 아니면 둘다? 어쩌면 약간의 예가 도움이 될 것입니다. – Beartums
기존의 자바 스크립트 로직은 DOM을 다양한 방식으로 수정하고 현재 로직을 녹아웃으로 업그레이드하는 방식으로 대신 ViewModel을 수정하고 싶습니다. 가능한 모든 경우 :) – Sandman
기본적으로 제공 한 예제에서, 당신은 일시적으로 Knockout의 작업을 * 모형에서보기로 업데이트 *보기 *에서 부분적으로 ** 모델로 업데이트 *로 바꾸고 싶습니까? 나는 그것이 가능하다고 생각하지 않는다. 대신 구성 요소로 jQuery 코드를 고려하고 점진적으로 각 부분을 녹아웃 코드로 변환하기 시작합니다. – Tyblitz