Angular中的可变范围

时间:2015-11-14 19:00:29

标签: html angularjs

我正在Angular中构建一个简单的网页注册表单,将数据存储在Parse中。

controller('AppCtrl', ['$scope', '$rootScope', function($scope, $rootScope) {

    $rootScope.groupCreated = false;

    $scope.signUp = function(form) {

        var Group = Parse.Object.extend("AdminOrg");
        var group = new Group();
        group.set("groupName", form.name);
        group.set("groupPassword", form.password);

            group.save(null, {
                  success: function(data) {
                      $rootScope.groupCreated = true;

                  },
                  error: function(data, error) {
                    alert(error.message);
                  }
                });
      };
}]);

我在我的HTML中使用$ rootScope.groupCreated来隐藏注册表单并显示"已成功创建的组"一旦调用成功函数,就会显示消息。该值已成功更改为true,但它未更改html视图。我使用以下内容隐藏并显示两个div:

ng-hide="$rootScope.groupCreated"
ng-show="$rootScope.groupCreated"

我是否在HTML中错误地访问了$ rootScope?

1 个答案:

答案 0 :(得分:5)

Well Angular只是不知道你在范围上有所改变,因为Parse函数不是Angular生态系统的一部分,所以不包含在摘要检查循环中。只需使用$apply方法手动了解Angular:

group.save(null, {
    success: function (data) {
        $rootScope.groupCreated = true;
        $rootScope.$apply();
    },
    error: function (data, error) {
        alert(error.message);
    }
});

另一个问题,感谢vp_arth在评论中注意到:你没有在Agnular表达式中使用$rootScope前缀:

ng-show="groupCreated"