knockoutjs와 매핑 플러그인을 사용하여 서버 호출에서 반환 된 JSON의 뷰 모델을 생성합니다. 서버에서 배열을 가져온 다음 매핑 된 배열을 속성으로 가진 모델을 만든 다음 데이터를 배열에 바인딩하여 모든 데이터를 화면에 렌더링합니다. 어느 것이 좋습니다.ajax 호출에서 반환 된 JSON에서 생성 된 녹아웃 매핑 된 배열의 멤버를 삭제하는 방법은 무엇입니까?
this video (약 14:20 참조)의 예와 같이 제거 할 수있는 각 항목 옆에 버튼을 표시하고 싶습니다.
그러나 비디오에서 그는 배열 요소에 정의 된 함수에 바인딩합니다. 내 요소는 매핑 플러그인을 사용하여 JSON에서 생성되므로 각 요소에 함수를 추가하는 방법이 확실하지 않거나 원하는 경우에도 수행해야합니다. 또는 단추의 클릭을 viewmodel의 함수에 바인드시키고 버튼이 연관된 요소의 ID를 전달할 수 있습니까?
내 자바 스크립트 :
<script type="text/javascript">
var supplierModel;
$(function(){
getAllSuppliers();
})
function getAllSuppliers(){
$.getJSON('/SWM60Assignment/allsuppliers',function(responseData){
supplierModel = new SupplierModel(responseData);
ko.applyBindings(supplierModel);
});
}
var SupplierModel = function (supplierList) {
var self = this;
self.suppliers = ko.mapping.fromJS(supplierList);
self.remove = function(supplierId){
// how can I get the buttons to call this method with the id
// of the element they are the button for?
alert('remove called with supplier id:'+supplierId);
}
};
</script>
이 템플릿입니다 :
<script id="supplierTemplate" type="text/html">
<li>
Name: <span data-bind="text:name"></span> Address: <span data-bind="text:address"></span>
<button data-bind="click:<what can I put here to bind correctly>>">Remove supplier</button>
</li>
</script>
과 완전성에 대한 HTML :
<ul class="vertical" data-bind="template:{name:'supplierTemplate',foreach:suppliers}"></ul>
감사합니다! 나는 그것이 가능해야한다는 것을 알고 있었고, 구문이 무엇인지 확실하지 않았습니다. –
항목을 제거한 후 공급자 개체의 길이가 변경되지 않습니다. 그것을하는 어떤 방법. – vivek
해야합니다. 이 배열의 길이는 어떻게 쿼리합니까? – beauXjames