我正在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?
答案 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"