根据可观察性做一些事情

时间:2014-09-08 13:23:23

标签: knockout.js

  // HTML
  <button class='btn btn-success uppercase btn-lg active' data-bind="click: showVideoTool, css: {active: activeVideoTool}">Video Tool</button> 

  // Javascript
  self.showVideoTool = function() {
    // Checking if the value is true then make it false
    if (self.activeVideoTool == true) {
      self.activeVideoTool(false);
    } else {
      self.activeVideoTool(true);
    }
  }
  self.activeVideoTool = ko.observable();

当您看到代码时,我想捕获activeVideoTool observable的当前值,以便知道我是否会将其设为truefalse

我必须在这里做错事。任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找一个可计算的观察者。

变化:

  self.showVideoTool = function() {
    // Checking if the value is true then make it false
    if (self.activeVideoTool == true) {
      self.activeVideoTool(true);
    } else {
      self.activeVideoTool(false);
    }
  }

为:

  self.computedShowVideoTool = function() {
    // Checking if the value is true then make it false
    if (self.activeVideoTool == true) {
      self.activeVideoTool(true);
    } else {
      self.activeVideoTool(false);
    }
  }

self.showVideoTool = ko.computedObservable(self.computedShowVideoTool, self);

当activeVideoTool将来发生变化时,它将触发computedObservable函数。

答案 1 :(得分:1)

if (self.activeVideoTool == true)

self.activeVideoTool是一个可观察的:

self.activeVideoTool = ko.observable();

这是一个功能,而不是财产。要获得它的价值,您需要调用该函数:

if (self.activeVideoTool() == true)

这是淘汰赛的常见问题,因为当你声明一个绑定时,淘汰赛会自动为你解开你的观察点。