如何正确注入角度服务

时间:2014-08-09 03:26:38

标签: javascript node.js angularjs toastr

我创建了一个名为notifier的服务,如果用户成功登录,则使用toastr在登录过程中提醒用户。

这是我的登录模块:

var login = angular.module('login',[]);

    login.controller('mvLoginCtrl', function($scope, $http){
        $scope.signin = function(username, passowrd){
            $http.post('/login', {username:username, passowrd:passowrd}).then(function(response){
                if(response.data.success){
                    mvNotifier.notify('You have successfully signed in!');
                }else{
                    mvNotifier.notify('Username/Password combination incorrect');
                }
            })
        }
    })

直到这里我没有错误但是当我尝试登录时我得到了这个明显的错误:

  

ReferenceError:未定义mvNotifier

我在第2行更改了我的登录模块,包括所需的依赖项:

login.controller('mvLoginCtrl', function($scope, $http, mvNotifier) 

然后我得到了不同的错误

  

错误:[$ injector:unpr]   http://errors.angularjs.org/1.2.20/ $注射器/ unpr?P0 = mvIdentityProvider%20%3 C-%20mvIdentity

我想问一下我得到这个错误的原因是什么以及如何解决它。 这是我的mvNotifier模块代码:

var notifier = angular.module('notifier', []);

    notifier.value('mvToastr', toastr);
    notifier.factory('mvNotifier', function(myToastr){
        return{
            notify: function(msg){
                mvToastr.success(msg);
                console.log(msg);
            }
        }
    })
谢谢。

2 个答案:

答案 0 :(得分:1)

你需要注入myNotifier,如下所示:

var login = angular.module('login',['notifier']);

    login.controller('mvLoginCtrl', ['$scope','$http','mvNotifier',function($scope, $http,mvNotifier){
        $scope.signin = function(username, passowrd){
            $http.post('/login', {username:username, passowrd:passowrd}).then(function(response){
                if(response.data.success){
                    mvNotifier.notify('You have successfully signed in!');
                }else{
                    mvNotifier.notify('Username/Password combination incorrect');
                }
            })
        }
    }])

更多关于Dependency Injection

答案 1 :(得分:1)

您需要在登录模块中添加通知程序模块作为依赖项。

var login = angular.module('login',["notifier"]);

然后这应该有用。

login.controller('mvLoginCtrl', function($scope, $http, mvNotifier) 

修改: DEMO