我有将此功能添加到$ scope对象的功能。
function newUT(unit, apply) {
newGuid(function (data) {
var newTask = {
id: data,
TaskName: 'New Task',
_showdetails: true,
};
unit.tasks.push(newTask);
apply();
});
}
该功能通过以下方式分配给控制器中的$ scope
$ scope.newUT = newUT;
在放入数组对象之前,ng-repeat并没有更新。 newGuid是旧版应用程序,用于从服务器获取Guid,然后将其放入本地文件存储区Guid索引表中。因此,我无法完全消除该代码。
该代码由以下方式调用:
<button type="button" ng-click="newUT(unit,$apply)">
所以问题是我真的不喜欢传递$ apply,但是如果我不喜欢,我将无法更新数组。
有没有更好的办法?
我看到了Angular service containing http get call not working with ng-repeat
但是我不确定如何将newGuid调用包装为q调用
由于newGuid是共享服务器调用,因此我不知道这是否正确。
有没有更好的办法?我的工作可以接受吗?
最佳答案
$timeout服务可以在这里提供帮助。如果为newGuid方法设置了包装服务,则可以将回调包装在$ timeout中:
JSFiddle
app.service('svc', function($timeout){
this.getGuid = function(cb){
getGuid(function(value){
$timeout(function(){
cb(value);
});
});
};
});