Javascript ng repeat td内的输入字段不触发功能
在学习angularjs时,我正在创建一个表,当一行创建一个新的输入字段时,会创建一个新的输入字段,这样您就可以在其中放置一个数字,它会进行一些计算,但当我更新该字段时,它什么也不做。我对它进行了测试,输入字段在表之外,它的工作方式应该是这样的,那么是什么原因导致输入字段在td标记内部时没有响应呢 这是我的密码: HTMLJavascript ng repeat td内的输入字段不触发功能,javascript,angularjs,angularjs-ng-repeat,angular-ngmodel,Javascript,Angularjs,Angularjs Ng Repeat,Angular Ngmodel,在学习angularjs时,我正在创建一个表,当一行创建一个新的输入字段时,会创建一个新的输入字段,这样您就可以在其中放置一个数字,它会进行一些计算,但当我更新该字段时,它什么也不做。我对它进行了测试,输入字段在表之外,它的工作方式应该是这样的,那么是什么原因导致输入字段在td标记内部时没有响应呢 这是我的密码: HTML ng重复示例 数据总数: 数量: 用户: 使用者 用户数据总数 成本 {{item}} {{amts}} {{成本} JS var-app=angular.module(
ng重复示例
数据总数:
数量:
用户:
使用者
用户数据总数
成本
{{item}}
{{amts}}
{{成本}
JS
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.total=0;
$scope.entries=0;
$scope.userData=0;
$scope.items=[];
$scope.upateEntries=函数(){
$scope.items=[];
对于(变量i=0;i<$scope.entries;i++){
$scope.items.push(i+1);
$scope.amts=($scope.total/$scope.entries);
}
}
$scope.updateData=函数(){
$scope.costs=$scope.userData*$scope.total;
}
});
链接到要使用的笔:
提前感谢您的帮助。您的输入发生更改时,肯定会调用
updateData
函数。问题是$scope.userData
始终为0。似乎userData
范围与ng repeat/item范围冲突。用一个简单的对象包装userData
,可以解决这个问题:
$scope.container = {
userData: 0
};
$scope.updateData = function(){
$scope.costs = $scope.container.userData * $scope.total;
}
及
{{成本}
New AngularJS开发人员通常没有意识到ng repeat
、ng switch
、ng view
、ng include
和ng if
都会创建新的子作用域,因此当涉及这些指令时,问题往往会出现。
var app = angular.module('myApp',[]);
app.controller('myCtrl', function($scope){
$scope.total = 0;
$scope.entries = 0;
$scope.userData = 0;
$scope.items = [];
$scope.upateEntries = function () {
$scope.items = [];
for (var i = 0; i < $scope.entries; i++) {
$scope.items.push(i + 1);
$scope.amts = ($scope.total / $scope.entries);
}
}
$scope.updateData = function(){
$scope.costs = $scope.userData * $scope.total;
}
});
$scope.container = {
userData: 0
};
$scope.updateData = function(){
$scope.costs = $scope.container.userData * $scope.total;
}
<tr ng-repeat="item in items track by $index">
<td><input type="number" ng-model="container.userData" ng-change="updateData()"></td>
<td>{{costs}}</td>
</tr>