Javascript 在AngularJS中,如何使用动态值初始化提供程序

Javascript 在AngularJS中,如何使用动态值初始化提供程序,javascript,angularjs,Javascript,Angularjs,对于AngularJS非常陌生,并且正在查看本教程中的代码 所以在app.config中我们使用setTypewar,但是如果这个值是动态的呢?当页面加载时,该值将由服务器提供并在HTML数据属性中设置,如: <div ng-app="app" ng-controller="AppCtrl" data-type="space"> {{ title }} </div> 提供程序可以这样做吗?是的,可以使用另一个提供程序方法,然后在配置中调用它。为了简单起见,您还可以使

对于AngularJS非常陌生,并且正在查看本教程中的代码

所以在app.config中我们使用setTypewar,但是如果这个值是动态的呢?当页面加载时,该值将由服务器提供并在HTML数据属性中设置,如:

<div ng-app="app" ng-controller="AppCtrl" data-type="space">
  {{ title }}
</div>

提供程序可以这样做吗?

是的,可以使用另一个提供程序方法,然后在配置中调用它。为了简单起见,您还可以使用factory方法,将factory注入配置并设置动态值

基本工厂:

app.module('getValue', [])
    .factory('fetchValue', function($http) {
        return {
            getType: function(callback) {
                return $http({
                    method: 'GET',
                    url: "whatever you have"
                }).
                success(function(data) {
                    callback(data);
                }); 
            }
        };

    });
在app.config中,您可以像

app.config(function (gameProvider,fetchValue) {
  fetchValue.getType(function(data){
      gameProvider.setType(data);
  });  
});

提供程序用于允许在配置阶段进行服务配置。因此,我认为这些对直接渲染到视图中的数据没有帮助。如果你不能提供这些值,我建议你写一个指令。这是一个很好的例子,但是如果所需的数据通过服务器端的逻辑呈现到视图中,它就没有帮助了。还有,为什么要使用回调注入而不是返回的承诺呢?正如您所说,这不是我应该尝试从视图中设置动态变量的地方。提供程序不用于此目的
app.config(function (gameProvider,fetchValue) {
  fetchValue.getType(function(data){
      gameProvider.setType(data);
  });  
});