【问题标题】:Angular $watch function not working as intendedAngular $watch 功能未按预期工作
【发布时间】:2015-08-31 06:45:11
【问题描述】:

所以我在指令的链接函数的范围内有以下观察者。我已经将此模式用于另一个变量,它可以工作,但是这个不能。有没有人有什么建议。代码如下

    $scope.$watch('QOLFactory.surveysInView', function(newValue, oldValue, scope){
        console.log(QOLFactory.surveysInView);
        console.log(newValue, oldValue);
        scope.surveys = newValue;
        scope.surveyData = generateSurveyTotals(newValue);
});

第一个控制台日志打印 QOLFactory.surveysInView 的正确值,但第二个控制台日志打印未定义、未定义。是不是我做错了什么?

提前致谢。

【问题讨论】:

  • 你能给我们一个提琴手吗?
  • 我的猜测是您将QOLFactory 注入指令中,但您没有将其放在范围内?尝试:$scope.QOLFactory = QOLFactory; 只是猜测,显示更多代码。为什么每个人都必须有一个该死的小提琴或plunkr!? :(
  • 如果surveysInView 是一个复杂对象,您可能需要向$watch 添加第三个true 参数,以便它进行深入检查。在此处查看文档(搜索 objectEquality):docs.angularjs.org/api/ng/type/$rootScope.Scope
  • 谢谢@SunilD。您的回答是正确的,我必须将 QOLFactory 分配给控制器中的 $scope 才能使指令正常运行

标签: angularjs watch


【解决方案1】:

为了让 watcher on 指令能够访问注入到控制器中的 Service,必须将 Service 分配给 $scope 变量。这使得观察者的行为符合预期,并返回正确的值。

【讨论】:

    猜你喜欢
    • 2013-08-29
    • 2020-04-28
    • 2021-08-27
    • 1970-01-01
    • 2012-10-07
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多