AngularJS:注入Restangular并在工厂中使用$ location

时间:2014-03-10 18:56:49

标签: angularjs

我有以下工厂。我用它来存储程序各个部分的选项卡列表。

myApp.factory('RootService', function($location) {
    var tabList = [ ... ];
    var loginTabList = [ ... ];

    return {
        setTabList: function(data) {
            tabList = data;
        },
        getTabList: function(data) {
            if ($location.path() !== '/login') { return tabList; }
            else {
                if (data === 0) { return loginTabList; }
                else { return tabList; }
            }
        }
    };
});

我想将这些列表的初始化移动到我的Java层,以便我可以从Oracle数据库中填充它们。我对后端进行了整理,但是当我尝试将Restangular注入工厂以便我可以使用它时,工厂会阻止AngularJS运行。通过微小的更改,我可以让AngularJS再次使用一个:

myApp.factory('RootService', function($location) { ... });

或另一个:

myApp.factory('RootService', ['Restangular', function(Restangular) { ... }]);

声明但不是两者。我是否错误地宣布工厂?如何同时使用Restangular和$ location?

2 个答案:

答案 0 :(得分:1)

尝试使用以下内容:

myApp.factory('RootService', ['Restangular','$location', 
function(Restangular, $location) { 
... 
}]);

您可能没有对$locationRestangular

使用内联注释

更多关于here

答案 1 :(得分:1)

可以像这样定义你的工厂

app.factory('RootService', ['Restangular','$location', function(Restangular,$location) {
  ...
}]);

这是一个有效的PLUNKER示例......