[英]How do I solve this Javascript variable reference mess
因此,这是我遇到的问题:
app.controller 'MainCtrl', ($scope, TestData) ->
$scope.name = 'World'
TestData.get(0).then (data)->
$scope.elem = data
TestData.get(1).then (data)->
$scope.elem2 = data
$scope.callFunc = ->
TestData.modify1()
TestData.modify2()
app.factory 'TestData', ($q,$timeout)->
data = [{
name: "TestData #1"
id: 1
},{
name: "TestData #2"
id: 2
}]
funcs = {}
funcs.get = (id)->
deferred = $q.defer()
$timeout(->
deferred.resolve(data[id])
,500)
return deferred.promise
funcs.modify1 = ->
data[0].name = "DataTest #1"
funcs.modify2 = ->
data[1] = {
name: "DataTest #2"
id
}
return funcs
我不知道该如何解决,但我想更新数组中的元素。 我了解替换它不会起作用。 但是我该如何解决呢?
如果只是名称/ ID,那将不是问题。 但是实际的模型有很多不同的数据,我不想单独更新它们。
这是一个展示问题的plnkr(以防万一): http ://plnkr.co/edit/cBXJsIghlIeIUQGLfZfe?p=info
(我确实理解了为什么它不起作用的理论,我主要是在寻找解决这个问题的最有效方法。)
要将object in
所有属性复制到object out
,可以执行以下操作:
for k of in
out[k] = in[k]
我不确定您在做什么(对Angular不太熟悉),但是您可能会在这里得到一些想法: http : //plnkr.co/edit/LKb6NQ4u0dORLya42LED
$scope.callFunc = ->
TestData.modify $scope.elem, 0
TestData.modifyAlt $scope.elem2, 1
...
funcs.modify = (incoming,i)->
console.log "incoming:",incoming
for k of incoming
data[i][k] = incoming[k]
funcs.modifyAlt = (outgoing,i)->
console.log "data[i]:",data[i]
for k of data[i]
outgoing[k] = data[i][k]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.