控制器的变量没有反映在UI上

时间:2014-12-11 09:14:52

标签: javascript html angularjs

在加载HTML页面时,我调用了一个在angularjs控制器(discussion())中的函数,它将值赋给变量($ rootScope.name),稍后我会点击同一个HTML页面上的一个按钮,这会触发一系列JavaScript函数和最后一个JS函数使用此命令调用相同的angularjs函数

angular.element(document.getElementById('loadDiscussions')).scope().discussions();

虽然这个功能会被调用,但我没有在UI上看到任何价值。我认为该变量的范围是缺失的。

注意:在页面加载时,我会看到UI上的值,但是点击按钮后看不到任何值。

1 个答案:

答案 0 :(得分:0)

从您的评论中,我假设代码在angularjs的摘要周期之外运行。 Angularjs使用摘要周期来运行不同的监视,负责更新UI并调用其他监视处理程序等。由于您的代码未在摘要周期内运行,因此angularjs不知道对范围变量所做的更改,因此摘要周期为未触发,因此UI未更新。

var $scope = angular.element(document.getElementById('loadDiscussions')).scope();
$scope.discussions();
if (!$scope.$$phase) {
    $scope.$apply()
}

如果您可以解释为什么要访问角度控制之外的范围并调用方法,我们可以提供更好的解决方案