'click'绑定不起作用 - 无法调用函数 - Knockout.js

时间:2015-06-15 18:15:52

标签: javascript knockout.js

我的观点中有以下内容:

<div data-bind='foreach: providers'>
  <div data-bind='text: name'></div>
  <button data-bind='click: model.addToCart'>Show</button>
  <table class="table">
    <thead>
      <th style="width: 300px">Name</th>
      <th>Price</th>
      <th></th>
    </thead>
    <tbody data-bind='foreach: items'>
      <tr>
        <td data-bind='text: name'></td>
        <td data-bind='text: price'></td>
        <td>
          <input type="button" data-bind='click: model.add' value="Add">
        </td>
      </tr>
    </tbody>
  </table>
</div>

以下在我的模型中:

function model() {
  var self = this;
  self.providers = data; //some random array data
  self.addToCart = function(place) {
    console.log(place);
  }
};

我在Knockout.js中使用了正常的click绑定。

当我运行代码时,似乎甚至没有调用addToCart函数。我没有从console.log()得到任何值的输出。

我错过了什么?我是初学者。请帮忙。

2 个答案:

答案 0 :(得分:2)

进入foreach循环后,您的范围就是您当前正在迭代的对象。因此,要引用父或根范围中的函数,您将不得不使用$root(尽管$parent在这种情况下是相同的):

<button data-bind='click: $root.addToCart'>Show</button>

请参阅Documentation

答案 1 :(得分:1)

您的父视图模型应该

cf login

然后在你的foreach循环中你可以使用

setPageFormat(width, height, orientation);