Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态变化的角度全局值_Javascript_Angularjs_Angular Services - Fatal编程技术网

Javascript 动态变化的角度全局值

Javascript 动态变化的角度全局值,javascript,angularjs,angular-services,Javascript,Angularjs,Angular Services,我似乎找不到合适的词。我读了一大堆东西,找不到我想做的事。我确信有一种方法是有角度的,我在文档中没有读过 我想创造一个全球性的价值或服务…比如 main.value 'settings', (-> data = testing: 'teset' setTimeout -> data.testing = 'what' console.log('from settings', data) , 5000 r

我似乎找不到合适的词。我读了一大堆东西,找不到我想做的事。我确信有一种方法是有角度的,我在文档中没有读过

我想创造一个全球性的价值或服务…比如

main.value 'settings', (->
    data =
        testing: 'teset'

    setTimeout ->
        data.testing = 'what'
        console.log('from settings', data)
    , 5000

    return data
)()
在一个实际示例中,将使用pubsubs而不是超时来更新这些值

我也试着用工厂和服务来做这件事,但都是一样的

我的控制器可能看起来像这样

main.controller('somecontroller', ['$scope', 'settings',
($scope, settings)->

    $scope.test = settings.testing

    $scope.$watch settings.testing, ->
        console.log 'here we ', settings
        $scope.test = settings.testing
我希望能够使用动态变化的全局模型来使用控制器更新视图


使用Angular的正确方法是什么?

您这里的主要问题是,您使用的是标准的浏览器setTimeout函数,它完全没有Angular功能,因此Angular永远不会检测到您的代码修改了该值,也永远不会触发摘要循环

最好的选择是使用
$timeout
服务,而不是示例中的
setTimeout
。 或者,您可以在超时函数中使用
$scope.$apply()
,强制angular触发摘要循环并更新显示


此外,在Angular中,存在一个
$rootScope
对象(通过依赖注入进行访问,就像
$scope
),所有作用域都从该对象继承。如果您确实需要存储全局变量,那么这是存储全局变量的最佳位置(不过,标准建议始终是尽可能避免使用全局变量)。

您这里的主要问题是您使用的是标准浏览器setTimeout函数,这会完全耗尽angular—因此angular不会拾取代码修改的值,也不会触发摘要循环

最好的选择是使用
$timeout
服务,而不是示例中的
setTimeout
。 或者,您可以在超时函数中使用
$scope.$apply()
,强制angular触发摘要循环并更新显示


此外,在Angular中,存在一个
$rootScope
对象(通过依赖注入进行访问,就像
$scope
),所有作用域都从该对象继承。如果您确实需要存储全局变量,那么这是存储全局变量的最佳位置(不过,标准建议是尽可能避免使用全局变量)。

我的问题是,我如何拥有服务,更新服务返回的数据,并通知使用它的控制器更新?我不在乎超时,这是我想做的一个例子。如果我可以像我想做的那样使用服务,我不需要使用$rootScope。这回答了我的问题我的问题是,我如何拥有服务,更新服务返回的数据,并通知使用它的控制器更新?我不在乎超时,这是我想做的一个例子。我不需要使用$rootScope,如果我可以像我想做的那样使用服务,这就回答了我的问题