Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ng repeat td内的输入字段不触发功能_Javascript_Angularjs_Angularjs Ng Repeat_Angular Ngmodel - Fatal编程技术网

Javascript ng repeat td内的输入字段不触发功能

Javascript 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(

在学习angularjs时,我正在创建一个表,当一行创建一个新的输入字段时,会创建一个新的输入字段,这样您就可以在其中放置一个数字,它会进行一些计算,但当我更新该字段时,它什么也不做。我对它进行了测试,输入字段在表之外,它的工作方式应该是这样的,那么是什么原因导致输入字段在td标记内部时没有响应呢

这是我的密码: HTML

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>