2016-07-13 8 views
2

hereの2つのソリューションを試しましたが、角度コントローラにUnderscore.jsを注入

これは私のエラーです:ここでは

angular.js:68 Uncaught Error: [$injector:modulerr] Failed to instantiate module flavorApplication due to: Error: [$injector:unpr] Unknown provider: underscore

は、モジュールのための私のコードです:ここでは

var underscore = angular.module('underscore', []); 
 
underscore.factory('_', ['$window', function() { 
 
    return $window._; 
 
}]);

は私のアプリconfigです:

(function(){ 
 
    angular.module("flavorApplication", 
 
    ['ui.bootstrap', 
 
     'ui.router', 
 
     'angular-loading-bar', 
 
     'angular-confirm', 
 
     ]); 
 
     angular.module("flavorApplication").config(['$stateProvider', '$urlRouterProvider', '$locationProvider', 
 
     'underscore', function ($stateProvider, $urlRouterProvider, $locationProvider, underscore){

ここで私はあなたの中に注入する$window依存関係を逃した

(function() { 
 
    'use strict'; 
 

 
    angular 
 
     .module('flavorApplication') 
 
     .controller('UsedSearchesController', UsedSearchesController); 
 

 
    UsedSearchesController.$inject = ['$stateParams', '$state', 'DataService', '_']; 
 
    function UsedSearchesController($stateParams, $state, DataService, _) { 
 
     var vm = this; 
 
     vm.currentSearches = $stateParams.search.split("|") 
 

 

 
     activate(vm); 
 

 
     //////////////// 
 

 
     function activate(vm, _) { 
 
      vm.removeSearch = function (searchTerm) { 
 
       $stateParams.search = _.filter(vm.currentSearches, 
 
       function(search){return search !== searchterm}).join("|") 
 
       $state.go('home'); 
 
      } 
 
     } 
 
    } 
 
})();

答えて

3

(私が間違っているつもりだ、おそらくどこ)コントローラに注入しようとしています工場

underscore.factory('_', ['$window', function($window) { 

factory/serviceアングルの設定フェーズで利用可能なシングルトンオブジェクトを取得できないその他のものは、そのオブジェクトをそこに取得できません。

//remove 'underscore' dependency from config phase like below. 
angular.module("flavorApplication").config(['$stateProvider', '$urlRouterProvider', '$locationProvider', 
    function ($stateProvider, $urlRouterProvider, $locationProvider){ 

また、あなたは、activate関数にパラメータとして_を追加する必要はありません

function activate(vm) { //<-- remove _ from here 

Don't forget to inject underscore module to flavorApplication module so that would make available _ object throughout application modules & components.

angular.module("flavorApplication", 
['ui.bootstrap', 
    'ui.router', 
    'angular-loading-bar', 
    'angular-confirm', 
    'underscore' //<-- added underscore module here 
]); 
+1

しかし、最も重要なのは、彼が依存関係として 'underscore'モジュールを追加するのを忘れ'flavorApplication'モジュールに追加します。 – dfsq

+0

@dsfqヘッドアップの弟のおかげで、その点を –

+0

@dfsqに追加してくれてありがとう。それはそこに依存している。 Pankajさんが$ウィンドウを追加してもそれを修正していませんでした – chrissavage