Knockout.js 如何删除从ajax调用返回的JSON生成的敲除映射数组的成员?

Knockout.js 如何删除从ajax调用返回的JSON生成的敲除映射数组的成员?,knockout.js,knockout-mapping-plugin,Knockout.js,Knockout Mapping Plugin,我使用knockoutjs和映射插件从服务器调用返回的JSON生成视图模型。我从服务器获取一个数组,创建一个模型,该模型将映射的数组作为属性,然后数据将该数组绑定到一个模板,以在屏幕上呈现所有数据。这很有效 我希望在每个项目旁边都呈现一个按钮,这样我就可以删除它,如中的示例所示(参见14:20) 但在视频中,他绑定到数组元素上定义的函数。我的元素是使用映射插件从JSON生成的,因此我不确定如何向每个元素添加函数,或者我是否想这样做。或者我可以将按钮的单击绑定到viewmodel上的函数,并传入与

我使用knockoutjs和映射插件从服务器调用返回的JSON生成视图模型。我从服务器获取一个数组,创建一个模型,该模型将映射的数组作为属性,然后数据将该数组绑定到一个模板,以在屏幕上呈现所有数据。这很有效

我希望在每个项目旁边都呈现一个按钮,这样我就可以删除它,如中的示例所示(参见14:20)

但在视频中,他绑定到数组元素上定义的函数。我的元素是使用映射插件从JSON生成的,因此我不确定如何向每个元素添加函数,或者我是否想这样做。或者我可以将按钮的单击绑定到viewmodel上的函数,并传入与按钮关联的元素的id吗

我的javascript:

<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>

var供应商模型;
$(函数(){
getAllSuppliers();
})
函数getAllSuppliers(){
$.getJSON('/SWM60Assignment/allsuppliers',函数(responseData){
供应商模型=新供应商模型(响应数据);
ko.应用绑定(供应商模型);
});
}
var供应商模型=功能(供应商列表){
var self=这个;
self.suppliers=ko.mapping.fromJS(供应商列表);
self.remove=功能(供应商ID){
//如何获取按钮以使用id调用此方法
//它们是该元素的按钮?
警报(“使用供应商id:'+供应商id调用删除”);
}
};
这是模板:

<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>
    
      那么:

      <button data-bind="click: $parent.remove">Remove supplier</button>
      

      谢谢我知道这一定是可能的,只是不确定语法是什么。删除项目后,对象的长度不会改变。不管怎么做,都应该。如何查询此数组的长度?
      var SupplierModel = function (supplierList) {
          var self = this;
      
          self.suppliers = ko.mapping.fromJS(supplierList);
          self.remove = function(supplier){
              // observable array
              self.suppliers.remove( supplier ); 
          }
      };