繁体   English   中英

将$ index和$ data作为参数传递给单击处理程序

[英]Passing $index and $data as arguments to function for click handler

我将$index$data传递给change_model函数。 该函数按以下顺序期望2个参数:( (index, data)

从viewModel我传递click: $root.change_model.bind($data, $index()) 在函数中, index打印$data ,而data打印index :值相反。

self.change_model = function(index, data) {
  self.patternSelectedIndex(index);
  selected_door = data.file;
  create_door();
};
<div data-bind="foreach: x.patterns">
    <div class="thumbnail" data-bind="css: { selected: $index() === $root.patternSelectedIndex() }">
      <img class='img model' style='width:164px;height:90px;padding:5px' data-bind="attr:{src:'images/models/' + $data.file + '.png'}, click: $root.change_model.bind($data, $index())" />
      <div class="caption">
        <span data-bind="text: $data.name"></span>
      </div>
    </div>
</div>

的第一个参数bind将成为this因为淘汰赛仅仅使用自己的函数中, 经常bind功能

您可以传递$data$root作为第一个( thisArg )参数,也可以传递null或undefined,因为您实际上不需要它,因为您似乎使用了self = this习惯用法。

例如:

 var ViewModel = function () { var self = this; self.change_model = function (index, data) { console.log(this); console.log(index); console.log(data); // Actual code here }; self.x = { patterns: [{ file: 'some-file', name: 'some-name' }] }; }; ko.applyBindings(new ViewModel()); 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script> <div data-bind="foreach: x.patterns"> <button data-bind="click: $root.change_model.bind($data, $index(), $data)">Click me!</button> <span data-bind="text: $data.name"></span> </div> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM