2014-11-04 33 views
0

我有一个AngularJS的简单问题:数组之外的属性正常更新,但数组元素(绑定到这些属性)不是,这里是一个plunker表明:http://plnkr.co/edit/gNtGhiTf228G8rP0O2iB?p=previewAngularJS模型没有更新javascript数组里面

var vm = this; 

vm.topLine = { 
     netWrittenPremiumLastFye: 1000000, 
     netWrittenPremiumYtd: 123000 
    } 

vm.grossColumnChartData = [ 
     ['Previous YE', vm.topLine.netWrittenPremiumLastFye], 
     ['YTD', vm.topLine.netWrittenPremiumYtd] 
    ]; 

我们可以用$范围$腕表(“东西”,函数(属性oldValue,NEWVALUE){...}),但是,这不是一个很好的选择,在我的情况,因为我得。要多次这样做。

我想利用角度双向绑定,如上所述。

任何帮助或建议表示赞赏,谢谢!

回答

0

我认为你可以做到这一点而不使用$ watch的唯一方法是直接在html绑定中更新数组。

{{ grossColumnChartData = [ 
     ['Previous YE', vm.topLine.netWrittenPremiumLastFye], 
     ['YTD', vm.topLine.netWrittenPremiumYtd] 
    ] }} 
<br/> 
grossColumnChartData = {{grossColumnChartData | json}} 

看到这个: http://plnkr.co/edit/uthXcvoWSV2XNRFJzkck?p=preview

+0

哦,但我需要在控制器的其他地方建模,而不仅仅是HTML。为什么使用Angular绑定的数组元素不会改变?好奇。无论如何,谢谢你,至少我有另一种选择:) 非常好,如果我们有某种方式更新控制器中的数组元素。 – 2014-11-05 00:51:14

+0

还有另一种选择 - $手表 - 但你说你不想使用它! :) – Digitrance 2014-11-06 02:05:32

0

我已经更新了我的plnkr和我有我的答案现在:http://plnkr.co/edit/gNtGhiTf228G8rP0O2iB?p=preview

<div ng-repeat="item in vm.grossColumnChartData"> 
    <label>Input {{$index+1}}:</label> 
    <input ng-model="item.data" type="text"/> 
</div> 

我是数据绑定和基准之间的混淆。

我用ng-repeat来更新数组元素。