-1

我有一个有趣的困境,我还没有找到解决方案......希望有人能指出我正确的方向。

我正在使用淘汰赛/MVVM,我有点厌倦了在我的解决方案中的任何地方为相同的数据发出 ajax 请求......所以我决定创建一个小型库来加载和管理公共数据并开始使用它那里。这行得通,很好。

基于此,我有很多视图,我需要能够选择多个选项并让服务器通知它们。我已经编写了一些逻辑来执行此操作,本质上现在可以通过复选框和检查并在对象上进行 iselected 来正常工作,...当完成遍历数组时,检查 isselected 并返回一个新数组所选对象的ID...

事情就是这样,虽然,这很好用。我必须一遍又一遍地为每个实体做这件事……所以,在我的优化心情中,我想……

而不是(例如):

  • 国家((具有 Language + isselected 定义的基本函数/对象)
  • CountryList(包含数组和返回所选 id 的逻辑)
  • 语言(具有 Language + isselected 定义的基本函数/对象)
  • LanguageList((包含数组和返回所选ID的逻辑)
  • ......

我想我可以尝试做一个通用的解决方案,比如... * 基本函数/对象(可以是任何东西(通用):国家、语言、...)它)

所以我可以这样做:传入 JSON -> foreach 创建 BASE 对象并放入 BASE 数组

CreateObservableArrayFunction (Base array) 它添加了isselected逻辑并且可以返回任何通用对象的id(),只要它们具有id()属性。

也应该可以使用此功能在 MVC 视图本身中使用它...

注意......同样可以用于过滤等。

也许a解释得很糟糕,但我认为这对其他人也很有用,而不必一直重复代码。

感谢您的意见。

J。

4

1 回答 1

0

checked绑定也可以与数组一起使用,然后从该数组中添加/删除当前项。

对于您的“国家”示例,您将使用它像这样。查看型号:

...
vm.CountryList = ko.observableArray(); // list of countries
vm.CountrySelectedIds = ko.observableArray(); // list of country ids 
...

模板:

<div data-bind="foreach: CountryList">
    <input type="checkbox" data-bind="
        attr: {value: Id}, 
        checked: $parent.CountrySelectedIds" />
</div>

如果您的“Id”是一个字符串,这很有效。如果您想存储字符串以外的内容(例如,Country对象本身),请查看我的checkedInArray绑定

于 2013-04-16T23:45:29.413 回答