我正在使用以下ng-click
功能创建groups
:
$scope.createGroup = function() {
AV.Cloud.run('createUserGroup', {
groupName: $scope.initName
}, {
success: function(result) {
var data = JSON.parse(result);
var json = {
id: data.objectId,
name: data.name,
users: 0,
createdAt: data.createdAt
}
$scope.groups.push(json);
$scope.initName = "";
$scope.$digest();
},
error: function(error) {
alert(error.message);
}
});
但是当我点击链接转到该组(位于同一页面)时,该组不会出现。我必须刷新浏览器才能显示它。我尝试了$scope.$digest()
和$scope.$apply()
,但他们没有解决问题,只有location.reload();
。
AngularJS是否有另一个函数可以进行更新或重新加载以解决此问题?
修改
这就是我显示该群组的方式:
<div id="group-new" class="col-md-6">
<h2>{{group.name}}</h2>
</div>
答案 0 :(得分:2)
您是否尝试将其包装在$scope.$apply
中,它应该将更改应用到您的$ scope并在之后消化。例如:
$scope.createGroup = function() {
AV.Cloud.run('createUserGroup', {
groupName: $scope.initName
}, {
success: function(result) {
var data = JSON.parse(result);
var json = {
id: data.objectId,
name: data.name,
users: 0,
createdAt: data.createdAt
}
$scope.$apply(function() {
$scope.groups.push(json);
$scope.initName = "";
});
},
error: function(error) {
alert(error.message);
}
});
答案 1 :(得分:1)
你是如何使用$scope.$apply
的?
你试过吗?
success: function(result) {
// ...
$scope.$apply(function () {
$scope.groups.push(json);
$scope.initName = "";
});
}
答案 2 :(得分:0)
也许已经有$ digest循环在运行?
尝试$ timeout(你必须将它注入你的控制器): $timeout
success: function(result){
// ...
$timeout(function(){
$scope.groups.push(json);
scope.initName = "";
});
}
基本上它会延迟内部函数的执行(在上面的情况下:0ms),并使用$ apply触发一个新的摘要周期。它不会创建“$ digest in progress”错误,因为它在运行完成后会启动一个新的摘要。