AngularJS에서 ng-model="my_{$index}"를 ng-model로 동적으로 생성하는 방법
이것 좀 도와주실 수 있는지 여쭤보고 싶습니다.
나는 여기서 내 문제를 해결했다.ng-model="my_{$index}}}" 방법을 사용하여 ng-model을 사용하여 ng-model로 동적으로 일부 입력을 생성해야 한다.
jsfiddle에서는 동적으로 생성하기 전까지는 모든 것이 정상적으로 동작하고 있음을 알 수 있습니다.
html은 다음과 같습니다.
<div ng-app>
<div ng-controller="MainCtrl">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td>
<select ng-model="selectedQuery"
ng-options="q.name for q in queryList" >
<option title="---Select Query---" value="">---Select Query---</option>
</select>
</td>
</tr>
<tr ng-repeat="param in parameters">
<td>{{param}}:</td>
<td><input type="text" ng-model="field_X" />field_{{$index}}</td>
</tr>
</table>
<div>
<div>
자바스크립트는...
function MainCtrl($scope) {
$scope.queryList = [
{ name: 'Check Users', fields: [ "Name", "Id"] },
{ name: 'Audit Report', fields: [] },
{ name: 'Bounce Back Report', fields: [ "Date"] }
];
$scope.$watch('selectedQuery', function (newVal, oldVal) {
$scope.parameters = $scope.selectedQuery.fields;
});
}
어떤 아이디어라도 줄 수 있나요?
정말 감사해요.
이것으로 문제가 해결됩니까?
function MainCtrl($scope) {
$scope.queryList = [
{ name: 'Check Users', fields: [ "Name", "Id"] },
{ name: 'Audit Report', fields: [] },
{ name: 'Bounce Back Report', fields: [ "Date"] }
];
$scope.models = {};
$scope.$watch('selectedQuery', function (newVal, oldVal) {
if ($scope.selectedQuery) {
$scope.parameters = $scope.selectedQuery.fields;
}
});
}
또한 컨트롤러:
<tr ng-repeat="param in parameters">
<td>{{param}}:</td>
<td><input type="text" ng-model="models[param] " />field_{{$index}}</td>
</tr>
스코프상에 오브젝트를 작성할 수 있습니다(예를 들어,values
) 및 다음과 같이 이 오브젝트의 속성에 바인드합니다.
<input type="text" ng-model="values['field_' + $index]" />
완전한 솔루션을 설명하는 jsFiddle은 다음과 같습니다.http://jsfiddle.net/KjsWL/
저는 pkozlowski의 답변을 상세하게 설명하고 다이내믹 ng-model을 사용하여 다이내믹한 형태를 생성하려고 했습니다.
<form ng-submit="testDynamic(human)">
<input type="text" ng-model="human.adult[($index+1)].name">
<input type="text" ng-model="human.adult[($index+1)].sex">
<input type="text" ng-model="human.adult[($index+1)].age">
</form>
하지만 먼저 컨트롤러 내부의 '인간' 범위를 정의해야 합니다.
$scope.human= {};
그런 다음 전송 시 다음과 같은 데이터가 생성됩니다(생성되는 필드의 양에 따라 다름).
var name = human.adult[i].name;
var sex = human.adult[i].sex;
var age = human.adult[i].age;
그것은 매우 간단하며 나는 내 대답이 도움이 되기를 바란다.
이러한 필드명을 생성하는 이유가 있습니까?각 필드를 문자열 이름 대신 이름과 값을 가진 개체로 취급할 수 있습니까? (FIDDLE)
function MainCtrl($scope) {
$scope.queryList = [
{ name: 'Check Users', fields: [ { name: "Name" }, { name: "Id" } ] },
{ name: 'Audit Report', fields: [] },
{ name: 'Bounce Back Report', fields: [ { name: "Date" } ] }
];
}
그리고 그냥 반복해서selectedQuery.fields
:
<tr ng-repeat="field in selectedQuery.fields">
<td>{{field.name}}:</td>
<td><input type="text" ng-model="field.value" /></td>
</tr>
베테라바의 답변은 나에게 큰 도움이 되었다.그러나 솔루션을 Typescript로 이행해야 했을 때, 그것은 나에게 있어서 동작하지 않았다.제가 대신 한 일은 이렇습니다.개별 파라미터(예에서는 queryList의 필드)를 "value" 필드를 포함하는 풀오브젝트로 확장했습니다.그 후, 「가치」필드에 묶었더니, 매우 효과가 있었습니다.
원래 가지고 있던 것:
[
{ name: 'Check Users', fields: [ "Name", "Id"] },
...
}
]
이렇게 바꿨어요.
[
{ name: 'Check Users', fields: [
{Text:"Name",Value:""},
{Text:"Id",Value:0}],
...
]
}
]
...'Value' 하위 필드에 바인딩됩니다.
괜찮으시다면 여기 제 타이프스크립트입니다.
html:
<div ng-repeat="param in ctrl.sprocparams" >
<sproc-param param="param" />
</div>
Angular Material을 사용하는 sproc-param 지시어.ng-model을 param에 바인드하는 방법을 참조하십시오.값:
return {
restrict: 'E',
template: `
<md-input-container class="md-block" flex-gt-sm>
<label>{{param.Name}}</label>
<input name="{{param.Name}}" ng-model=param.Value></input>
</md-input-container>`,
scope: {
param: "="
}
}
다음 방법을 사용하여 ng-model로 ng-repeater에서 동적으로 몇 가지 입력을 생성해야 합니다.
ng-model="my_{{$index}}"
.
를 사용할 수 있습니다.this
대괄호 표기 속성액세서 식별자:
<tr ng-repeat="param in parameters">
<td>{{param}}:</td>
<td>
<input type="text" ng-model="this['my_'+$index]" />
my_{{$index}}
</td>
</tr>
식별자를 사용하여 $scope 개체에 액세스할 수 있습니다.this
상세한 것에 대하여는, 을 참조해 주세요.
언급URL : https://stackoverflow.com/questions/19573001/how-to-generates-dynamically-ng-model-my-index-with-ng-repeat-in-angularj
'programing' 카테고리의 다른 글
Node.js를 사용한 데이터 스트리밍 (0) | 2023.03.31 |
---|---|
create-react-app로 구축된 React 프로젝트를 다음 create-react-app 버전으로 업그레이드하는 방법은 무엇입니까? (0) | 2023.03.31 |
AngularJS를 사용하여 다른 페이지로 리다이렉트하는 방법 (0) | 2023.03.31 |
Angularjs 입력 값 형식 지정 (0) | 2023.03.31 |
.config, .run, AppCtrl - 경로 배치 위치 (0) | 2023.03.31 |