【问题标题】:Value from $rootScope is not loaded properly$rootScope 中的值未正确加载
【发布时间】:2019-06-12 12:10:38
【问题描述】:

所以我基本上是在页面加载时尝试从我的$rootScope 获取属性。我需要这个属性,所以我可以在我的表单中显示值。

测试后:

console.log("DEBUG $rootScope", $rootScope);
console.log("DEBUG $rootScope.localClient", $rootScope.localClient);

我注意到$rootScope 包含localClient 属性,但$rootScope.localClient 未定义。这是为什么呢?

请参阅下面的控制台屏幕。

这里是我填充 localClient 对象的地方

function setClient(client, tvaNumber) {
    if (tvaNumber) {
        if (angular.isUndefined($rootScope.localClient))
            $rootScope.localClient = {};

        $rootScope.localClient[tvaNumber] = client; 
    }
}

【问题讨论】:

  • 您是从异步调用中分配localClient 属性吗?
  • 据我所知,没有。只是一个常规的同步调用。我也会添加 localClient 的启动
  • 在分配localClient 值之前,您是否在记录$rootScope
  • 如何调用setClient 方法?
  • 恐怕它可能会这样做,但控制台说$rootScope 实际上有一个localClient。那不是说已经分配了吗?

标签: angularjs angularjs-scope rootscope angularjs-rootscope


【解决方案1】:

尝试像这样访问它,

console.log("DEBUG $rootScope.localClient", $rootScope['localClient']);

【讨论】:

  • 仍未定义。
  • 这样有什么区别?
  • @Jordec 您是否要在函数中打印它?你能发布完整的代码吗
  • @PankajParkar 这个括号表示法是安全的,因为它们可以包含任何字符,包括空格。
  • @Sajeetharan 我明白了,但我没有看到你在localClient中提到的东西
【解决方案2】:

你必须确保在使用之前加载属性,因为 JavaScripte 总是传递一个对象的引用。或者你可以试试 console.log(JSON.parse(JSON.stringify($rootScope)) 获取真正的价值。

一个例子: var a = {}; console.log(a);a.test = '1';

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2021-05-25
  • 2019-11-01
  • 2017-07-06
  • 1970-01-01
相关资源
最近更新 更多