获取clickfunction的值,敲除clickbindings

时间:2017-01-05 19:46:55

标签: javascript knockout.js

请有人帮助我从点击功能获取值,它没有在控制台上显示任何内容,我需要在点击特定列表项时获取标题和位置值

 var locations = [
{title: 'Park Ave Penthouse', location: {lat: 40.7713024, lng: -73.9632393}},
{title: 'Chelsea Loft', location: {lat: 40.7444883, lng: -73.9949465}},
{title: 'Union Square Open Floor Plan', location: {lat: 40.7347062, lng: -73.9895759}}


  var viewmodel = function(){
    var self = this;
    self.location = ko.observableArray();
    locations.forEach(function(locat){
      self.location.push(locat)
    })

self.clickEvent= function(currentItem){
    console.log(currentItem.title())


  }
  }

  ko.applyBindings(new viewmodel());

html就像这样

 <ul data-bind="foreach:location">
    <li data-bind = "text:title,|click:$parent.clickEvent"></li>
  </ul>

1 个答案:

答案 0 :(得分:0)

默认情况下,Knockout点击绑定会将当前模型值作为第一个参数传递,因此您不需要做任何花哨的事情。您的代码中还有一些其他错误可能会阻止事件正常触发。

“|”你点击绑定中的符号可能不应该存在,除非这是我不熟悉的函数:

//<li data-bind = "text:title,|click:$parent.clickEvent"></li>
<li data-bind = "text:title, click:$parent.clickEvent"></li>

标题周围的额外括号不应该存在,因为您已将标题定义为字符串文字而不是可观察的。

//console.log(currentItem.title())
console.log(currentItem.title);

您还缺少多个分号和位置数组的结尾括号。

编辑:fiddle