【问题标题】:Knockout.js: Click binding only working first time I click?Knockout.js:单击绑定仅在我第一次单击时起作用?
【发布时间】:2013-04-08 07:33:51
【问题描述】:

在 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>

问题是这仅在我第一次单击菜单项时才有效。第二次、第三次、第 n 次未获取 JSON。

我做错了什么?还是我误会了什么?

提前致谢!

【问题讨论】:

标签: javascript knockout.js knockout-2.0


【解决方案1】:

我已经为你分享了这个小提琴,它表明你的代码中有一些你没有在问题中指定的错误:

每次点击时都会调用不存在的 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);

【讨论】:

  • 您好,感谢您的回答。你说的对。还有其他问题,但我设法解决了它。将更新此问题。
猜你喜欢
  • 2012-07-09
  • 1970-01-01
  • 1970-01-01
  • 2021-02-14
  • 1970-01-01
  • 2013-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多