【问题标题】:Watch variable changes in Jquery/Javascript [closed]观察 Jquery/Javascript 中的变量变化 [关闭]
【发布时间】:2016-11-03 08:09:49
【问题描述】:

有没有办法像在 AngularJS 中那样观察 Jquery/Javascript 中的变量变化?

【问题讨论】:

  • 是的 - 使用控制台
  • 按 F12 > 控制台
  • 这太模糊和宽泛了。给我们一个代码示例,说明您想要做什么。例如,ES2015 的 Proxy 可能是您正在寻找的,或者 ES5 的 getter/setter,但在这两种情况下,它们都与对象及其属性相关,而不是变量。
  • 尝试使用 Jquery 的 '.text()' 方法在更改变量时更新 HTML 的元素。 api.jquery.com/text
  • @RoryMcCrossan 这是个好问题!!!而且非常有用。

标签: javascript jquery angularjs


【解决方案1】:

Angular 使用摘要循环来检测更新变量后的更改。例如,当您单击一个元素时,它将更改作用域中的变量,并立即触发查看以查看已更改的内容。您可以使用简单的区间函数完成类似的操作:

var _watch = null;
var test = null;
setInterval(function() {
    if ( _watch !== test ) {
        _watch = test;
        console.log('Variable changed.', test);
    }
}, 100);

要对此进行测试,只需在控制台中输入test = "test",您应该会看到“变量已更改”。

【讨论】:

    【解决方案2】:

    您可以使用obj.watch,但目前仅在 Gecko(基本上是 firefox)中支持。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/watch

    编辑:对于 Chrome,可以使用 Object.observe

    【讨论】:

    • "for now" - 它永远不会出现在标准中,我们现在有Proxy。此外,它适用于对象,而不是变量。
    【解决方案3】:

    使用 getter/setter 方法:

    var log = ['test'];
    var obj = {
      get latest () {
        if (log.length == 0) return undefined;
        console.log('getting latest!'); // or trigger an event
        return log[log.length - 1]
      }
    }
    console.log (obj.latest); // Will return "test".
    

    https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Functions/get

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-16
      • 1970-01-01
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多