을 knockout.mapping에서 만들 때 배열에서 개체를 제거 .. 내 코드의 매우 단순화 된 버전입니다 다음 추가 관찰이
내 HTML 코드
:<div class="container body-content" data-bind="foreach:base">
<div class="col-md-12" data-bind="with:s">
<div class="col-md-4"><pre data-bind="text:sp"></pre></div>
<div class="col-md-7">
<div class="row" data-bind="foreach: spd">
<input type="text" class="form-control" data-bind="value:value, valueUpdate: 'input'" />
<button data-bind="click: $parent.addval">add</button><button data-bind="click: $parent.removeval">rem</button>
</div>
</div>
</div>
</div>
내 자바 스크립트 코드 :
<script src="knockout-3.2.0.js"></script>
<script src="knockout.mapping.js"></script>
<script>
var data = [{
"s": {
"sp": "abc",
"spd": [
{
"value": ""
}
]
},
"type": "xyz",
}];
var AppScope = function() {
function BaseViewModel() {
var self = this;
self.base = ko.observableArray();
self.base(ko.mapping.fromJS(data)());
}
ko.applyBindings(new BaseViewModel());
}();
</script>
'데이터'배열은 서버에서 제공되며 데이터 구조가 매우 복잡하므로 $ root를 사용할 수 없습니다. here 스타일이 답이 될 수 있지만 아직 이해할 수 없습니다 ..
코드는 버튼을 제외하고 작동합니다. "spd"아래의 배열에 {value : ""} 객체를 추가하는 방법을 이해하고 addval 및 remval 함수를 누를 때 동일한 것을 제거하는 방법을 알고 싶습니다.
모든 도움을 진심으로 감사
감사하지만 작동하지 않습니다. 내 데이터 배열에 여러 개체가 있습니다. 데이터 구조를 표시하기 위해 여기에 하나를 제공했습니다. 또한 서버에서 오는 실제 객체는 훨씬 복잡한 데이터 구조를 가지므로 $ root를 사용할 수 없습니다. http://knockoutjs.com/documentation/unobtrusive-event-handling.html과 같은 것이 사용되어야하지만 불행히도 알아낼 수는 없습니다. – Arnab
어때요? 어때요? 클릭 핸들러는'$ parent' ('with' 바인딩에서 오는's')와 데이터 항목을'addval'과'removeval'에 넘깁니다. –