AngularJS array.push ng:重复不更新

时间:2013-06-12 00:30:25

标签: angularjs

我在服务中有一个创建函数,它负责获取输入数据,将其转换为资源,执行保存并将其插入本地缓存。

create = (data, success, error) ->
    throw new Error("Unable to create new user, no company id exists") unless $resource_companies.id()

    # create the resource
    new_model = new resource(data)

    # manually add the company id into the payload (TODO: company id should be inferred from the URL)
    new_model.company_id = $resource_companies.id()

    # do the save and callbacks
    new_model.$save( () ->
        list.push(new_model)
        success.call(@) if success?
    , error)

我的问题是一个ng:重复监视列表变量没有得到更新。据我所知,这不是在AngularJS之外发生的,所以它不需要$ scope。$ apply()来保持最新(实际上,如果我尝试触发摘要,我的摘要已经在进行中)误差)

更奇怪的是,我在其他地方使用了这种完全相同的模式而没有问题。

我的控制器用来访问列表数组的代码是(这在服务中)

# refreshes the users in the system
refresh = (cb) -> list = resource.query( () -> cb.call(@) if cb? )

在控制器中:

$scope.users = $resource_users.refresh()

1 个答案:

答案 0 :(得分:0)

这可能是因为您要分配新的参考。 Angular正在观看旧的引用,它永远不会改变。以下是替换引用的位置:

list = resource.query( /* ... */ )

相反,如果您将列表作为对象的属性,则angular的ng-repeat watch应该能够观察list对象的data属性中的更改:

data.list = resource.query( /* ... */ )