나는 녹아웃 모델을 위해 아래의 구조를 가지고 있습니다. 그것은 객체를 포함하는 관찰 가능한 배열을 포함합니다.녹아웃 관측 가능한 배열에서 항목을 제거하십시오
function ViewModel() {
var self = this;
self.newItem = ko.observable({
manufacturer: ko.observable(),
itemnumber: ko.observable(),
itemDescription: ko.observable()
});
self.AllItems = ko.observableArray();
self.addItem = function() {
self.newItem().manufacturer("test");
self.newItem().itemDescription("data");
self.AllItems.push(self.newItem);
};
self.removeItem = function(data) {
self.AllItems.remove(data);
};
}
첫 번째 문제 :이 스크립트를 통해 나는 텍스트 상자에 새로운 itemnumber를 입력 한 후 관찰 배열에 추가 텍스트 상자에서 itemnumber에 새 항목을 가지고 추가 항목을 클릭 만하고 나는 항목을 변경할 때 번호와 히트를 추가하면 배열 안의 모든 항목 번호가 변경됩니다. 어떻게하면 배열 내부에 고유 한 데이터를 가질 수 있습니까?
두 번째 문제 : 배열에서 특정 항목을 제거해야하지만 삭제하지는 않습니다. 누군가가 itemnumber 속성에 따라 observable 배열에서 항목을 삭제할 수있는 방법을 알려주십시오.
<input type="text" data-bind="value: newItem().itemnumber"/>
<div>
Items: <button data-bind="click: addItem">Add Item</button>
</div>
<div>
<table>
<tbody data-bind="template: { name: 'itemTemplate', foreach: AllItems }"></tbody>
</table>
</div>
<script type="text/html" id="itemTemplate">
<tr>
<td>
<input data-bind="value: itemnumber" />
<a href="#" data-bind="click: $parent.removeItem">Remove Item</a>
</td>
</tr>
</script>
나는 문제의 빠른보기에이 바이올린을 만들었습니다. 그냥 도움이 녹아웃을 배우기 시작했습니다.
http://jsfiddle.net/N3JaW/138/
기술적으로는 올바르지 만보기 모델이 뷰 모델을 갖는 이유에 반하는 DOM 지식을 필요로하기 때문에 이것은 이상적인 솔루션은 아닙니다. 나는 당신의 작업에 기초하여 완전히 새로운 대답을 만들고 싶지 않으므로, 여기서 더 좋은 해결책은'textBox'에 값을 저장하기위한 관측을해야한다는 것입니다. 그러면이 observable_의 값을 검색합니다. 'addItem' 안에 있습니다. 빌라! 이제 뷰 모델은 DOM과 독립적입니다. – awj
굉장 .. 도움이된다면 – sp9
sp9 주셔서 감사합니다. 답변을 수락하실 수 있습니까? :) – Shrabanee