Knockout.js:点击绑定只在我第一次点击工作?

时间:2013-04-08 07:33:52

标签: javascript knockout.js knockout-2.0

在Knockout.js中遇到一些函数问题。基本上它是一个菜单,第一个菜单项“Översikt”应该获取一个JSON数组并填充视图。

淘汰赛代码:

self.ongoingAuctions = ko.observableArray([]);
self.getOngoingAuctions = function(data) {
    $.getJSON("assets/json/auctions.json", function(data) {
        self.ongoingAuctions(data);
    });
}

我的点击装订:

<a href="#" data-bind="text: 'Översikt', click: function(){ setHeadline.bind($data,'Översikt'); getOngoingAuctions() }, css: { active: 'Översikt' == headline() }" class="lead"></a>

问题是这只在我第一次点击菜单项时才有效。 JSON不会在第二,第三,第n次获取。

我做错了什么?或者我误解了什么?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我已经为您分享了这个小提琴,它显示了您未在问题中指定的代码中的其他错误:

每次单击

时,都会调用不存在的json(在我的情况下)

JS Fiddle to working code

var viewModel = function(){
    var self = this;
    self.ongoingAuctions = ko.observableArray([]);
    self.getOngoingAuctions = function(data) {
        $.getJSON("assets/json/auctions.json", function(data) {
            self.ongoingAuctions(data);
        });
    }
    self.setHeadline = function(){
        console.log('set headline')
    }
    self.headline = function(){
        console.log('headline');
    }
}

var myVm = new viewModel();

ko.applyBindings(myVm);