$ routeProvider并解决:更复杂的工厂作为字符串传递

时间:2014-12-13 11:46:47

标签: javascript angularjs angular-routing

请检查this Plunk

我正在做的是我遵循AngularJS模块:

var synergy_module = angular.module('synergy', ['ngRoute'])
  .config(function($provide, $routeProvider, $httpProvider) {
    $routeProvider.when('/', {
      template: '<div>{{here}}</div>',
      controller: SpecificationCtrl,
      resolve: {
        w: "myFct"
      }
    });
    $routeProvider.otherwise({
      redirectTo: '/'
    });
  });

synergy_module.factory("myFct", ["$http",
  function($http) {
    return $http.get("http://api.openweathermap.org/data/2.5/weather?q=London,uk");
  }
]).factory("my.Fct", ["$http",
  function($http) {
    var o = {
      getWeather: function() {
        return $http.get("http://api.openweathermap.org/data/2.5/weather?q=London,uk");
      }
    }
    return o;
  }
])

function SpecificationCtrl($scope, w) {
  $scope.here = w.data;
}

这可以正常工作,因为myFct工厂有一个简单的名称并返回$promise,但它不是很有用。我的工厂看起来更像my.Fct

  • 他们在名字中有点(又名&#34;包&#34;)和
  • 使用方法返回对象(这些方法返回$promise

我怎样才能通过这个&#34;复杂的&#34; my.Fct出厂解析为字符串并指定解析时应使用哪个工厂方法?

更新 好的,基于更多的搜索,这对我有用:

resolve: {w:  ["my.Fct",function (myFct) {
  return myFct.getWeather();
}]} 

但是代码要多得多,使用字符串似乎对我来说更具可读性......

0 个答案:

没有答案