Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
使用AngularJS将一个Select的JSON对象复制到另一个Select ng模型_Angularjs_Json_Html Select_Angular Ngmodel_Angularjs Ng Model - Fatal编程技术网

使用AngularJS将一个Select的JSON对象复制到另一个Select ng模型

使用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,然后我需要

我正在收集JSON

$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作为理解表达式的一部分来指定的方面具有更大的灵活性
  • 减少