使用AngularJS将一个Select的JSON对象复制到另一个Select ng模型
我正在收集JSON使用AngularJS将一个Select的JSON对象复制到另一个Select ng模型,angularjs,json,html-select,angular-ngmodel,angularjs-ng-model,Angularjs,Json,Html Select,Angular Ngmodel,Angularjs Ng Model,我正在收集JSON $scope.person = [ { "Id": 1 "Name": "John" }, { "Id": 2 "Name": "Jack" }, { "Id": 3 "Name": "Watson" }, ]; 我有两个HTML Select和相同的JSON集合。我在第一次选择“Person”时选择了一个人Watson,然后我需要
$scope.person = [
{
"Id": 1
"Name": "John"
},
{
"Id": 2
"Name": "Jack"
},
{
"Id": 3
"Name": "Watson"
},
];
我有两个HTML Select和相同的JSON集合。我在第一次选择“Person”时选择了一个人Watson,然后我需要在第二次HTML选择“Copy Person”时更新该人。但我无法更新
我将JSON对象绑定为HTML选择中的值,而不是Id
或名称
使用AngularJS选择HTML
人
({key.Name}})
抄写人
({key.Name}})
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.person=[
{
“Id”:1,
“姓名”:“约翰”
},
{
“Id”:2,
“姓名”:“杰克”
},
{
“Id”:3,
“姓名”:“沃森”
}
];
$scope.selected={
人:空,,
复制人:空
};
$scope.$watchCollection('selected.person',函数(newData,olddata){
var obj=JSON.parse(newData);
如果((obj!=未定义)&&&(obj!=null)&&&(obj.Id!=未定义)&&(obj.Id!=null)&&&(obj.Id!=0”)){
变量名称=对象名称;
警报(名称);
$scope.selected.copy_person=obj;
}
});
});
这是您必须使用的代码,为此设置了ng选项:
使用AngularJS选择HTML
人
抄写人
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.person=[
{
“Id”:1,
“姓名”:“约翰”
},
{
“Id”:2,
“姓名”:“杰克”
},
{
“Id”:3,
“姓名”:“沃森”
}
];
$scope.selected={
人:空,,
复制人:空
};
$scope.$watchCollection('selected.person',函数(newData,olddata){
var obj=新数据;
如果((obj!=未定义)&&&(obj!=null)&&&(obj.Id!=未定义)&&(obj.Id!=null)&&&(obj.Id!=0”)){
变量名称=对象名称;
警报(名称);
$scope.selected.copy_person=obj;
}
});
});
这是您必须使用的代码,为此设置了ng选项:
使用AngularJS选择HTML
人
抄写人
var-app=angular.module('myApp',[]);
应用程序控制器('myCtrl',函数($scope){
$scope.person=[
{
“Id”:1,
“姓名”:“约翰”
},
{
“Id”:2,
“姓名”:“杰克”
},
{
“Id”:3,
“姓名”:“沃森”
}
];
$scope.selected={
人:空,,
复制人:空
};
$scope.$watchCollection('selected.person',函数(newData,olddata){
var obj=新数据;
如果((obj!=未定义)&&&(obj!=null)&&&(obj.Id!=未定义)&&(obj.Id!=null)&&&(obj.Id!=0”)){
变量名称=对象名称;
警报(名称);
$scope.selected.copy_person=obj;
}
});
});
不要使用ng repeat创建第二个选择,请执行以下操作:
<div class="md-block">
<label>Person</label>
<select ng-model="selected.person">
<option ng-repeat="key in person | orderBy:Id" value="{{key}}">({{key.Name}})</option>
</select>
</div>
<hr />
<div class="md-block">
<label>Copy Person</label>
<select ng-model="selected.copy_person" ng-options="obj.Name for obj in person track by obj.Name">
</select>
</div>
人
({key.Name}})
抄写人
这正是为什么不应使用ngRepeat with渲染选择选项的原因。在许多情况下,ngRepeat可以用于元素而不是ngOptions,以获得类似的结果。但是,ngOptions提供了更多好处:
- 在如何通过select作为理解表达式的一部分来指定的方面具有更大的灵活性
- 通过不为每个重复实例创建新作用域,减少了内存消耗
- 通过在documentFragment中创建选项而不是单独创建选项,提高了渲染速度。您应该改用ngOptions
如果您不想使用更好的方式ng options,您可以为option指令添加带有条件检查逻辑的ng selected属性,以使预选工作 不要使用ng repeat创建第二个选择,执行以下操作:
<div class="md-block">
<label>Person</label>
<select ng-model="selected.person">
<option ng-repeat="key in person | orderBy:Id" value="{{key}}">({{key.Name}})</option>
</select>
</div>
<hr />
<div class="md-block">
<label>Copy Person</label>
<select ng-model="selected.copy_person" ng-options="obj.Name for obj in person track by obj.Name">
</select>
</div>
人
({key.Name}})
抄写人
这正是为什么不应使用ngRepeat with渲染选择选项的原因。在许多情况下,ngRepeat可以用于元素而不是ngOptions,以获得类似的结果。但是,ngOptions提供了更多好处:
- 在如何通过select作为理解表达式的一部分来指定的方面具有更大的灵活性
- 减少