Knockoutjs设置当前项目

时间:2012-05-24 10:56:18

标签: javascript knockout.js knockout-2.0

在此代码中:http://jsfiddle.net/PDwBF/1/
链接到谷歌不起作用。如何修复?

<ul data-bind="foreach: Items">
    <li data-bind="click: $root.SetCurrent">
        <p data-bind="text: id"></p>
        <div>
            <a href="http://google.com" target="_blank">Go to google</a>
        </div>    
    </li>
</ul>    

function ViewModel() 
{ 
  var self = this;
  self.SelectedItem = ko.observable();
  self.Items = ko.observableArray([]);
  self.SetCurrent = function(item) 
  {
      self.SelectedItem(item);
  };
};  

var vm = new ViewModel();
ko.applyBindings(vm); 

vm.Items.push({id: 55});
vm.Items.push({id: 66});
vm.Items.push({id: 77});

2 个答案:

答案 0 :(得分:2)

一种选择是返回true;从你的SetCurrent方法,这将 允许默认操作继续进行: http://jsfiddle.net/rniemeyer/PDwBF/3/

感谢rpn https://groups.google.com/group/knockoutjs/browse_thread/thread/6ef1081249377728

答案 1 :(得分:0)

如果你添加一个返回true,它就可以了。

e.g。

function ViewModel() 
{ 
  var self = this;
  self.SelectedItem = ko.observable();
  self.Items = ko.observableArray([]);
  self.SetCurrent = function(item) 
  {
      self.SelectedItem(item);
      return true;
  };
};