Javascript 每个ng重复的嵌套唯一ng模型
当前正在创建包含嵌套的ng重复和ng模型的页面。ng模型基于美元指数 (因为JSFIDLE有一个过时的角度) 控制器:Javascript 每个ng重复的嵌套唯一ng模型,javascript,angularjs,Javascript,Angularjs,当前正在创建包含嵌套的ng重复和ng模型的页面。ng模型基于美元指数 (因为JSFIDLE有一个过时的角度) 控制器: var myApp = angular.module('myApp', []); myApp.controller('teamController', function($scope) { $scope.league = { teams: 5, format: 4} $scope.toArray = functio
var myApp = angular.module('myApp', []);
myApp.controller('teamController', function($scope) {
$scope.league = { teams: 5,
format: 4}
$scope.toArray = function(team) {
return new Array(team);
};
$scope.log = function(data) {
console.log(data);
};
});
HTML:
创建团队
团队{{$index+1}
队名
玩家{{$index+1}
试验
我从一家工厂提取了每支球队的球队和球员数量。它们只相当于两个数字。可能有5支球队,每个队有4名球员。这将创建一个包含五个重复表的页面,每个表中有4个玩家的行和一个团队名称
我正在想办法把这些数据发送到数据库。由于此页面是根据团队和玩家的数量呈现的,因此制作ng模型的唯一方法是使用$index
数据库有以下列(如有需要,可更改):
- 团队id(唯一,插入时创建)
- 联赛id(每个队都是唯一的,从工厂结转)
- 队名
- 玩家1
- 玩家2
- 玩家3(接受空值)
- 播放器_4(接受空值)
- 玩家_5(接受空值)
- 播放器_6(接受空值)
- 站立
- 支付
- 创建数据
- 更新的
此外,可能还有一个较小的问题,按照我的设置方式,它强制将每个文本的输入作为ng模型名称。这必须改变。我认为您需要在新的结构中解析您的结构
$scope.parseLeague = [];
for(var i=0;i<$scope.league.teams ;i++){
$scope.parseLeague.push({team: "team_"+i, players: []});
for(var j=0;j<$scope.league.format;j++){
$scope.parseLeague[i].players.push("player_"+j);
}
}
工作笔
var myApp=angular.module('myApp',[]);
myApp.controller('teamController',函数($scope){
$scope.team={};
$scope.league={队数:5,
格式:4}
$scope.toArray=功能(团队){
返回新阵列(团队);
};
$scope.log=函数(数据){
控制台日志(数据);
};
});代码>
创建团队
团队{{$index+1}
队名
玩家{{$index+1}
试验
JSON:
{{team}
我想你是在向后看。如果在控制器中设计所需的模型,则ng repeat
将就位。您所采用的方法更像是JQuery的思维方式,尝试基于DOM构建模型。这是行不通的,关于无限摘要的多条消息可能会证明这一点。我现在正在看代码,看看我是否可以建议一种有角度的方法来做这件事。@Vanojx1刚刚发布了一个类似于我已经开始玩弄的结构。http.post请求是什么样子的?我将添加请求是基于后端php的??谢谢。我今天就试着回答。不,先生。NodeJS/Postgres。
$scope.parseLeague = [];
for(var i=0;i<$scope.league.teams ;i++){
$scope.parseLeague.push({team: "team_"+i, players: []});
for(var j=0;j<$scope.league.format;j++){
$scope.parseLeague[i].players.push("player_"+j);
}
}
<table ng-repeat="team in parseLeague track by $index">
<tr>
<td>Team Name</td>
<td><input type="text" ng-model="team.name"/></td>
</tr>
<tr ng-repeat="player in team.players track by $index">
<td>Player {{$index + 1}}</td>
<td><input type="text" ng-model="player"/></td>
</tr>
var request = $http({
method: "post",
url: "yoururl",
data: { teamsdata: angular.toJson($scope.parseLeague)}
});
request.success(
function( risp ) {
//handle your risp
}
);