【发布时间】:2014-09-07 22:58:05
【问题描述】:
在 Angular 工厂中,我有一种创建新商品的方法,该商品与用户建立连接,并为该用户的“商品”数组(如购物车)添加价格。因此,我必须查看用户是否存在于我的本地用户数组中,如果不存在则在服务器上,如果不存在则创建用户。
代码如下所示:
var saveItem = function (item) {
var user = filterUserById(item.ownerId);
if (user) {
user.createItem(item);
} else {
repository.getUserById(item.ownerId).then(
function (serverUser) {
var userViewModel = repository.getUserViewModel(serverUser);
userViewModel.createItem(item);
users.push(userViewModel);
}
, function () {
user = {
id: item.ownerId,
items: [
createItemDto(item)
]
};
repository.createUser({ id: user.id }, user);
users.push(repository.getUserViewModel(user));
});
}
};
无论发生哪种“情况”(用户是在本地、在服务器上或已创建和添加的)我都会收到错误:
错误:[$rootScope:inprog] $apply 已经在进行中 http://errors.angularjs.org/1.3.0-beta.18/$rootScope/inprog?p0=%24apply
我认为这可能与我在存储库中使用资源的事实有关,但我认为资源不应该(因为它是 angular.. 的一部分)。这里是 user.createItem 方法,代码:
user.createItem = function (item) {
var resource = userResource
, itemDto = createItemDto(item)
, command = [{
Type: 'add',
Name: 'items',
Value: itemDto
}];
resource.createItem({ id: item.ownerId }, command);
this.items.push(itemDto);
};
你不工作!?请帮助! :'(
附:我在代码中的任何地方都没有任何明确的调用来应用、编译或消化。
【问题讨论】:
标签: angularjs