我尝试升级我的项目以使用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
的修改
我发现了问题并且我的自定义验证指令似乎与AngularJS 1.3不兼容,我的输入实际上也有这段代码undefined
这是罪魁祸首
答案 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>