2014-03-03 51 views
0

我想學習角度和注入我的工廠類稱爲'courseService'到我的控制器稱爲CoursesController(coursesController.js)一些困難。它並不總是實例化。這是我如何設置它現在:依賴注入在角度應用程序中發佈工廠對象null?

(function() { 

var CoursesController = function ($scope, $location, $filter, $routeParams, courseService) { 
CoursesController.$inject = ['$rootScope', '$scope', '$routeParams', 'courseService']; 

}); 

爲了說明這個問題,我創建了一個plunker樣本:

http://plnkr.co/edit/W9OmBs7w8RlV55EWngT1?p=preview 

當您運行courseService被實例化精則樣本。我可以在chromeconsole看到這個(來源run.plnkr.co)

enter image description here

我按一下按鈕「添加課程」,這將帶我去courseEditController。當我然後點擊查看課程將會帶我回到coursesController時,courseService是未定義的。見下圖。有趣的是,當我點擊courses.html上的CTRL + F5時,它就沒有問題。我怎樣才能解決這個問題?

enter image description here

+0

有人嗎?哪裏都是這些精明的開發商:) – user603007

回答

0

在plunker樣品,我得到了以下錯誤:

Error: [$injector:unpr] http://errors.angularjs.org/1.2.12/$injector/unpr?p0=courseFilterFilterProvider%20%3C-%20courseFilterFilter 

未知提供商 「courseFilter」

在文件 「coursesController.js」,下面的代碼

function filterCourses(filterText) { 
     $scope.filteredCourses = $filter("courseFilter")($scope.courses, filterText); 
     $scope.filteredCount = $scope.filteredCourses.length; 
} 

但是,「courseFilter」還沒有被de罰款爲任何文件中的過濾器。 把它定義爲

var courseFilter = function() { 
    return function (input, filterText) { 
     //filter code goes here 
    }; 
}; 
angular.module('CoursesApp').filter('courseFilter', courseFilter); 

這應該可以解決您的問題。

+0

是我固定的這一個,但我仍然有同樣的錯誤:( – user603007

+0

到底是什麼時顯示的錯誤?請還張貼。 ,檢查依賴性的順序CoursesController。它應該是 var CoursesController = function($ rootScope,$ scope,$ routeParams,$ location,$ filter,courseService){ CoursesController。$ inject = ['$ rootScope','$ scope','$ routeParams ', '$ location','$ filter','courseService']; – swathis

+0

hey that actually fixed it!thanks dude – user603007