繁体   English   中英

$ scope变量的更改未触发角$ watch

[英]Angular $watch not triggered on change in $scope variable

因此,我有一个例程需要与在应用程序初始化时检索到的用户数据一起运行。

我的主页控制器检查存储中是否有令牌(已登录的用户),然后在$ scope.currentUser已经存在的情况下运行例程,或者在AJAX调用返回该数据时对其进行监视。

但是$ 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();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM