【问题标题】:Does an AngularJS watch fire upon object initializationAngularJS 是否会在对象初始化时触发
【发布时间】:2016-09-12 14:11:51
【问题描述】:

我目前正在开发一个 AngularJS 应用程序

我有一个包含一些布尔标志的对象。我为其中一个布尔创建了一个手表。

手表会在对象创建时触发吗?即使布尔标志没有改变,手表也能随机触发吗?

【问题讨论】:

  • 粘贴一些代码
  • @Hitmands 我会的。但我问的是一般行为。我的问题有意义吗?
  • 手表在初始化时触发。所以你必须检查 newValue !== oldValue。
  • 是的,当您更改对象引用时,它总是会触发,但这又取决于您拥有的手表类型。你能在这里添加一些代码吗?
  • @PankajParkar 请看下面的答案

标签: javascript angularjs angularjs-scope


【解决方案1】:

所以我们有(我正在与 Gianluca 合作):

scope.$watch("chartData.selectedIndicator", function() {
    if (chartData.selectedIndicator !== -1){
        highlightMessageIndicator(chartData.selectedIndicator);
    }
}, true);

...尽管没有更新chartData.selectedIndicator,但这只手表仍在被击中,我想知道是否是因为在我们的chartData工厂中我们正在初始化selectedIndicator,这就是手表被击中的原因?

angular
    .module("app")
    .factory("chartData", [..., chartData]);

function chartData(...) {
    var chartData = {
        selectedIndicator   : -1,

我想知道这是否可能只是按照建议检查 newValue !== oldValue 的情况?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多