Angular $watch 未在 $scope 变量更改时触发
Angular $watch not triggered on change in $scope variable
所以我有一个例程需要 运行 使用在应用程序初始化时检索到的用户数据。
我的主页控制器检查存储中是否有令牌(登录用户),如果 $scope.currentUser 已经存在,则 运行 执行例程,或者放置在 AJAX 调用 returns 该数据时对其进行监视。
但是 $watch 回调在初始化后永远不会被触发。
这是 Feed Controller 代码
if (sessionStorage.getItem('token'))
{
if ($scope.currentUser) {getItems()}
else {$scope.$watch('currentUser', popFeed()) }
}
function delayForUser()
{
if ($scope.currentUser) {popFeed()}
}
以及应用程序控制器代码
if (sessionStorage.getItem('token') && sessionStorage != 'null')
{
UserSvc.getUser()
.then(function (response)
{
$scope.currentUser = response.data
})
假设你可以从两个控制器看到currentUser
(你提到它们是不同的),你需要在$watch
上传递一个函数,而不是立即执行它(用(),这是该函数的结果):
$scope.$watch('currentUser', function(newValue) {
popFeed();
});
所以我有一个例程需要 运行 使用在应用程序初始化时检索到的用户数据。
我的主页控制器检查存储中是否有令牌(登录用户),如果 $scope.currentUser 已经存在,则 运行 执行例程,或者放置在 AJAX 调用 returns 该数据时对其进行监视。
但是 $watch 回调在初始化后永远不会被触发。
这是 Feed Controller 代码
if (sessionStorage.getItem('token'))
{
if ($scope.currentUser) {getItems()}
else {$scope.$watch('currentUser', popFeed()) }
}
function delayForUser()
{
if ($scope.currentUser) {popFeed()}
}
以及应用程序控制器代码
if (sessionStorage.getItem('token') && sessionStorage != 'null')
{
UserSvc.getUser()
.then(function (response)
{
$scope.currentUser = response.data
})
假设你可以从两个控制器看到currentUser
(你提到它们是不同的),你需要在$watch
上传递一个函数,而不是立即执行它(用(),这是该函数的结果):
$scope.$watch('currentUser', function(newValue) {
popFeed();
});