angularjs将服务属性暴露给$ scope

时间:2016-06-15 13:27:50

标签: javascript jquery angularjs twitter-bootstrap

我正在尝试将一个角度服务属性公开给$ scope,要在视图中使用它我的代码看起来像这样

/**API Post SERVICE for user login*/
        function login(username,password){
            return $http.post('/api/login/',{
                   username:username,
                   password:password
            }).then(loginSuccessFn, loginErrorFn);

            function loginSuccessFn(data, status, headers, config){
                Authentication.setAuthenticatedAccount(data.data);

                window.location = '/';
            }
            function loginErrorFn(data, status, headers,config){
                console.error("Epic Failure");
            }
          }

所以当$ http方法返回错误并调用函数loginErrorFn()时,响应数据将在视图中传递,所以我可能会引发一个引导警报

我怎样才能实现这个目标?

2 个答案:

答案 0 :(得分:0)

在服务中注入$ rootScope,在成功和错误的情况下发出事件

 $rootScope.$emit('httpCall', 'success');
 $rootScope.$emit('httpCall', 'failure');

并在控制器内处理这些事件

$rootScope.$on('httpCall', function(p){scope.isSuccess = p;})

现在你应该在你的视图中引用你的范围变量isSuccess来显示警告。

答案 1 :(得分:0)

@Karim是对的,只是错过了那里:

在服务中注入$ rootScope时:

 $rootScope.$emit('httpCall', 'success');
 $rootScope.$emit('httpCall', 'failure');

当你抓住它时:

$rootScope.$on('httpCall', function(e,p){scope.isSuccess = p;})
  

$ rootScope。$ on('httpCall',function(e,p){}有两个参数