我已在线编写此代码dynamic form jsFiddle code
总计和总计不会自动更新。我之前有一个更简单的例子,它正在使用一个模型项目,但后来我创建了一个数组,现在它不能工作。我正在构建的真实程序将有更多的字段,我正在尝试创建一个预示例来显示它将起作用。有人能很快看到我忘记了什么蠢事吗?
<div ng-controller="MyCtrl">
<form name="myForm">
<div ng-repeat="item in items track by $index">
<input type="text" ng-model="item.a">
<input type="text" ng-model="item.b">
<input type="text" ng-model="item.c">
<label>Total: </label><label ng-bind="total(item)"></label>
</div>
</form>
<div>
<label>Grand Total: </label><label ng-bind="grandTotal()"></label>
</div>
</div>
var myApp = angular.module('myApp', []);
myApp.controller('MyCtrl', function($scope) {
$scope.items = [
{
a: 0, b: 0, c: 0
},
{
a: 0, b: 0, c: 0
}];
$scope.total = function(item) {
var result = item.a * item.b * item.c;
return isNaN(result) ? 0 : result;
};
$scope.grandTotal = function() {
var result = 0;
angular.forEach($scope.items, function(item) {
result += $scope.total(item);
});
return isNaN(result) ? "" : result.toString();
};
});
答案 0 :(得分:1)
ng-bind
应该没有$scope
。您无需在视图绑定中提及$scope
,它直接引用控制器的$scope
/ this
(上下文)。
除此之外,还将所有输入的ng-bind
更改为ng-model
,以便在所有输入字段上启用双向绑定。
<强>标记强>
<input type="text" ng-model="item.a">
<input type="text" ng-model="item.b">
<input type="text" ng-model="item.c">
ng-bind="total(item)"
答案 1 :(得分:1)
使用
<input type="text" ng-model="item.a">
而不是
<input type="text" ng-bind="item.a">