在AngularJS 1.3中,与ng模型的ng-repeat绑定似乎已被破坏,但在1.2中有效

时间:2014-09-01 16:55:08

标签: angularjs angularjs-ng-repeat

我尝试升级我的项目以使用AngularJS 1.3(写作时为RC0),但我的部分代码在1.2中有效,但似乎在{{}}中完全不起作用{1}}。除非我误解了1.3内部绑定的概念,这也是可能的。我在ng-repeat中有一个列表,里面有一些与ng-repeat绑定的输入,用于在ng-model中正常工作。

HTML代码:

1.2

控制器代码:

<fieldset id="order-fieldset1" ng-repeat="transaction in vm.transactions.orders.list">
    <legend>Transaction Order #{{$index+1}}</legend>
    <div>     
        <input type="number" name="nb_shares[]" ng-model="transaction.nb_shares" ng-change="vm.calculate()">
        <input type="number" name="prices[]" ng-model="transaction.price" ng-change="vm.calculate()">
        <input type="number" name="fees[]" ng-model="transaction.fee" ng-change="vm.calculate()">
    </div>
</fieldset>

我已经从我的// controller vm.transactions.orders = { list: [ { nb_shares: null, fee: null, price: null } ] }; // public function vm.calculate = calculate; function calculate() { // when I want to use it // AngularJS 1.2 returns proper value set of properties // but 1.3 always return null on all my properties var nbShares = vm.transactions.orders.list[0].nb_shares; console.debug(nbShares); } 功能中添加了具有控制台功能的Firebug输出。即使我输入了123,它也会显示我的属性calculate(),这是我正在更改的属性,nb_shares enter image description here



修改
我发现了问题并且我的自定义验证指令似乎与AngularJS 1.3不兼容,我的输入实际上也有这段代码undefined这是罪魁祸首

1 个答案:

答案 0 :(得分:0)

我不确定,但此代码可以解决此问题:

<fieldset id="order-fieldset1" ng-repeat="transaction in vm.transactions.orders.list track by $index">
    <legend>Transaction Order #{{$index+1}}</legend>
    <div>     
        <input type="number" name="nb_shares[]" ng-model="transaction.nb_shares">
        <input type="number" name="prices[]" ng-model="transaction.price">
        <input type="number" name="fees[]" ng-model="transaction.fee">
    </div>
</fieldset>