变量不会从控制器传递到视图

时间:2015-07-13 11:24:30

标签: angularjs controller scope

我是AngularJs的新手,无法弄清楚这个问题。

我尝试改变范围内那种不起眼的变量。

.controller('AuthController',  function($scope,Auth) {
      $scope.submit = function() {
          Auth.login($scope.username,$scope.password, function(result){
              $scope.result = result   
          });
      }
        })

Auth是一个向服务器发出GET请求并获得响应的服务:

{ 'status': 1,  'message': "User does not found!"}

但我的变量不会在我的模板中刷新。当我把这个

$scope.result = { 'status': 1,  'message': "User does not found!"}

在函数$ scope.submit之外。它工作正常。

这是我的路线。

$stateProvider
    .state('index', {
        url: "/",
        templateUrl: "/static/templates/_index.html",
    }) 

我的模板是。

<div class="alert" >{{ result.message }}</div>

有人可以解释一下我做错了什么吗? 感谢。

这是我的服务。

function login(username, password, callback) {
  return $http.post('/api/login/', {
    username: username, password: password
  }).success(callback);

}

插入后

Auth.login($scope.username,$scope.password, function(result){
$scope.result = result   
console.log($scope.result);  

我在我的萤火虫中看到了正确的数据。

对象{status = 1,message =&#34;找不到用户!&#34;}

$ $范围应用(); - 给我错误:[$ rootScope:inprog] http://errors.angularjs.org/1.4.0/ $ rootScope / inprog?p0 =%24digest

3 个答案:

答案 0 :(得分:0)

您确定Auth.login()没有回复承诺。看起来它想要,在这种情况下尝试......

Auth.login($scope.username, $scope.password)
    .then(function(result){
        $scope.result = result   
    });

很难说没有看到您的Auth服务。

答案 1 :(得分:0)

如果Auth.login()返回promise,您可以使用其then函数来定义成功和错误处理程序,例如:

    Auth.login($scope.username, $scope.password)
        .then(function(result){// success handler
            $scope.result = result  
            $scope.$apply(); 
        },function(error){// error handler
            console.log(error);
    });

但是,如果它进行ajax调用但未返回promise,则可以使用$q服务自行返回承诺。这是你如何做到的:

 var deferred = $.defer();
 deferred.resolve($.ajax({
// Your ajax call
})); 

您可以使用return deferred.promise返回承诺。

注意:确保在$q服务中注入Auth服务。

答案 2 :(得分:0)

问题是通过改变

来决定的
$scope.result = result.data;

$scope.blabla = result.data;

在那次魔术之后,我的模板终于向我展示了{{blabla}}变量。

角度剂量没有达到我的预期: - (