2013-10-22 91 views
0

引用factory.function我有下面定義爲angularjs兩個不同的應用程序文件:AngularJS從外部模塊

search.js

var app = angular.module('search',['ngGrid']); 
    app.factory('answers',function($http){ 
     return{ 
      search: function(params,success,error){ 
      //code to execute over rest  
     }, 
      otherSearch: function(params,success,error){ 
      //code to execute over rest  
     } 
     }; 
}); 

results.js

var app = angular.module('results',['ui.bootstrap','ngGrid']); 
    app.controller('resultsCtrl',function($scope,$http,search) // search should reference search.js 
    search.search(); 
    search.otherSearch(); 

});

我所試圖做的是參考自然而results.jssearch.jssearchotherSearch功能,這是未知提供商失敗當我這樣做:

var app = angular.module('results',['ui.bootstrap','ngGrid','search']); 

是什麼讓它如此的正確方法我可以調用其所包含search.js

+0

它看起來像你實際命名工廠'答案'..你有沒有嘗試注入'答案'和引用它的方式,而不是'搜索'? – Jakemmarsh

+0

@Jakemmarsh不確定我關注,你能否提供一個解決方案,以便我可以看到你的意思是一個最小的例子?此外,如果它全部在同一個文件中,這將工作正常,但我正在重用我的代碼。 – Woot4Moo

回答

0

在下面的代碼FACTORY方法,你正在做的是重新申報的角應用名稱爲search

var app = angular.module('search',['ngGrid']); 

正是在下面這段代碼你實際上宣告工廠,你已經把它命名爲answers

app.factory('answers',function($http){ 
     return{ 
      search: function(params,success,error){ 
      //code to execute over rest  
     }, 
      otherSearch: function(params,success,error){ 
      //code to execute over rest  
     } 
     }; 
}); 

我認爲這個問題是你試圖注入answerssearch 。試試這個:

app.controller('resultsCtrl',function($scope,$http,answers) 
    answers.search(); 
    answers.otherSearch(); 
+0

所以通過使上述變化我得到:'未知的提供者答案提供者< - 答案' – Woot4Moo

+0

所以這似乎工作,如果我把它作爲服務(爲答案),而不是工廠。 – Woot4Moo

+0

我不完全確定它爲什麼只能作爲服務。但我注意到的另一件事是,你將'app'定義爲兩個不同的東西:'search'和'results'。不知道這是否影響這 – Jakemmarsh