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

时间:2014-08-13 11:23:31

标签: javascript angularjs

对AngularJS很新,并查看本教程中的代码http://www.thinkster.io/angularjs/eIaGNOAlOk/angularjs-providers

var app = angular.module("app",[]);

app.provider("game", function () {
  var type;
  return {
    setType: function (value) {
      type = value;
    },
    $get: function () {
      return: {
        title: type + "Craft"
      };
    }
  };
});

app.config(function (gameProvider) {
  gameProvider.setType("War");
});

app.controller("AppCtrl", function ($scope, game) {
  $scope.title = game.title;
});

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

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

提供者可以吗?

1 个答案:

答案 0 :(得分:0)

是的,可以使用其他提供程序方法完成,然后在配置中调用它。为简单起见,您还可以使用工厂方法并在配置中注入工厂并设置动态值

基本工厂:

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);
  });  
});