javascript - $scope 变量发生变化时未触发 Angular $watch

标签 javascript angularjs controller watch

所以我有一个例程需要使用在应用程序初始化时检索的用户数据运行。

我的主页 Controller 检查存储中是否有 token (登录用户),然后如果 $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()}
}

以及应用程序 Controller 代码

if (sessionStorage.getItem('token') && sessionStorage != 'null')
{
    UserSvc.getUser()
    .then(function (response) 
    {
        $scope.currentUser = response.data
    })

最佳答案

假设您可以从两个 Controller 看到 currentUser (您提到它们是不同的),您需要在 $watch 上传递一个函数,而不是立即执行它(使用(),这是该函数的结果):

$scope.$watch('currentUser', function(newValue) {
    popFeed();
});

关于javascript - $scope 变量发生变化时未触发 Angular $watch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29311431/

相关文章:

angularjs - NVDA 忽略角色为 ="alert"的 Angular *ngIf block

javascript - AngularJS,$routeProvider

angularjs - 存储多个 Firebase 引用

javascript - Google 地方信息自动完成

spring - 阻止 Spring MVC Controller ?

php - 我们可以将多个参数传递给 Controller ​​中的函数吗?

javascript - AngularJs:对 Controller 的实现存疑

javascript - 如何在字符串中找到第三个 "_"的位置 - JavaScript

javascript - 在 JSX 的嵌套 map 函数中 react JS 打印数据

javascript - 如何用js删除标签?