在KnockoutJS中添加一个onclick事件列表项。

时间:2015-11-04 21:11:35

标签: javascript knockout.js

我遇到将onclick事件绑定到ul列表的问题。这是我的HTML:

<ul id="burgerist" data-bind="foreach: burgerList.sort(function (l, r) { return l.name() > r.name() ? 1 : -1 }), click: showmap">
                        <li data-bind=" text: name"></li>
                    </ul>

我遇到的问题是在showmap函数上。我正在尝试在警告框中返回该名称:

var ViewModel = function() {
    var self = this;

    this.burgerList = ko.observableArray([]);

    initialBurgerJoints.forEach(function(burgerItem){
        self.burgerList.push( new BurgerJoint(burgerItem) );        
        addmarker(burgerItem.lat, burgerItem.long, burgerItem.name, burgerItem.comments);
    });

    self.showmap = function(data) {
        alert(this.name);
    };      
}

有人能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:1)

点击绑定需要在列表中的每个项目上,而不是在列表本身上。该函数将被传递给当前上下文,在这种情况下,它将是burgerList中的汉堡。

<ul data-bind="foreach: burgerList.sort(function (l, r) { return l.name() > r.name() ? 1 : -1 })">
    <li data-bind="text: name, click: $component.showmap"></li>
</ul>

this.showmap = function(burger) {
    alert(burger.name());
};