无法使用Knockout JS绑定静态数据

时间:2014-05-20 17:02:20

标签: javascript jquery knockout.js

所以,我加载了我的页面,我的列表项目带有唯一的ID。

  <ul class="list-group" data-bind="template: { name: 'item-template', data: $root.items}">
    <li class="list-group-item">
      <span id="123" data-bind="text: item_name, attr: {'id': item_id}">Americanino</span>
      <span class="glyphicon glyphicon-remove-circle" data-bind="click: $parent.removeItem"></span>
    </li>      

    <li class="list-group-item">
      <span id="223" data-bind="text: item_name, attr: {'id': item_id}">Asos</span>
      <span class="glyphicon glyphicon-remove-circle" data-bind="click: $parent.removeItem"></span>
    </li>            
  </ul>

我在页面加载后绑定属性

jQuery(document).ready(function($) {

  var itemListModel = function() {
    (...)
    self.item_id = ko.observable();
    (...)
  }

  ko.applyBindings(new itemListModel());
});

但是当我尝试删除从服务器

加载的列表项时
// Remove item
self.removeItem = function(item) {
    alert(self.item_id());
    //self.items.remove(item);
}

然后我无法检索身份证。

如果我添加一个新项目,那么我可以获得该ID。但是如果我点击任何其他列表项,我也会获得相同的ID。

那么如何绑定&#34;静态&#34;内容?
这是一个问题,我有一个隐藏的输出,也有data-bind="value: item_id"

See my fiddle here

1 个答案:

答案 0 :(得分:2)

修改您的create_list方法

function create_list(exiting_list){
var arr_list = [];

$(exiting_list).find('li').each(function(e,li){
    var id = $(li).find('span').prop('id');
    var name = $(li).find('span').html();
    arr_list.push(new item(id, name));
});
return arr_list;

}

此处更新了小提琴 - http://jsfiddle.net/sherin81/JF55A/10/

实施了排序解决方案..更新了小提琴 - http://jsfiddle.net/sherin81/JF55A/11/