Knockout.js 如何在击倒js中停止在计算函数上触发可观察到的?

Knockout.js 如何在击倒js中停止在计算函数上触发可观察到的?,knockout.js,Knockout.js,我是KnocoutJs的新手。非常感谢您的帮助。 我想在单击div时调用这个函数,并且应该在computed函数中调用相同的函数。下面是我的功能 DetailViewModel.prototype.DisplayChange = function (name) { this.currentSelection(name); switch (this.currentSelection()) { case "abc": { this.ab

我是KnocoutJs的新手。非常感谢您的帮助。 我想在单击div时调用这个函数,并且应该在computed函数中调用相同的函数。下面是我的功能

DetailViewModel.prototype.DisplayChange = function (name) {
    this.currentSelection(name);
    switch (this.currentSelection()) {
    case "abc":
        {
            this.abc();
            break;
        }
    case "xyz":
        {
            this.showxyz();
            break;
        }
    }
};
<div class ="TestTabs" data-bind="foreach: availableTabs">
  <div class="Tab-ListItem" 
      data-bind="text: $data, click: $parent.DisplayChange.bind($parent), 
           css : {tabSelected : $parent.currentSelection() == $data}">
  </div>
</div>
我在点击.cshtml文件和内部计算函数时调用这个函数

DetailViewModel.prototype.DisplayChange = function (name) {
    this.currentSelection(name);
    switch (this.currentSelection()) {
    case "abc":
        {
            this.abc();
            break;
        }
    case "xyz":
        {
            this.showxyz();
            break;
        }
    }
};
<div class ="TestTabs" data-bind="foreach: availableTabs">
  <div class="Tab-ListItem" 
      data-bind="text: $data, click: $parent.DisplayChange.bind($parent), 
           css : {tabSelected : $parent.currentSelection() == $data}">
  </div>
</div>
即使我在单击时调用DisplayChange(),它也会在compselectedData()中触发。
如何在单击时停止触发计算函数?

您有一个无限循环:

  • 如果 当前选择已修改
  • currentSelection在计算的内部进行修改
为了打破这种循环,我建议如下:

在click事件上,更改currentSelection observable,而不是调用DisplayChange函数:

<div class ="TestTabs" data-bind="foreach: availableTabs">
  <div class="Tab-ListItem" 
      data-bind="text: $data, click: $parent.currentSelection($data), 
           css : {tabSelected : $parent.currentSelection() == $data}">
  </div>
</div>
DetailViewModel.prototype.DisplayChange = function (name) {
    switch (this.currentSelection()) {
    case "abc":
        {
            this.abc();
            break;
        }
    case "xyz":
        {
            this.showxyz();
            break;
        }
    }
};

这就是击倒的美妙之处,您只需更改模型,视图就会自动更新。

但是。点击标签怎么样。这意味着me对象不支持属性apply。我想我需要在单击选项卡时调用DisplayChange函数。请给我一些建议Hi nemesv,你能给我一些建议吗?