Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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 如何使用AngularJS根据选择更改更新对象数组_Javascript_Arrays_Angularjs_Angularjs Ng Change - Fatal编程技术网

Javascript 如何使用AngularJS根据选择更改更新对象数组

Javascript 如何使用AngularJS根据选择更改更新对象数组,javascript,arrays,angularjs,angularjs-ng-change,Javascript,Arrays,Angularjs,Angularjs Ng Change,我有两个动态对象数组。一个用于颜色,一个用于公共汽车。目标是为总线指定颜色。因此,使用ng重复代码create为每种颜色选择,然后使用ng change调用updatebus函数,传递颜色id。但是,它不起作用。颜色id始终未定义 如何为具有两个阵列的总线分配颜色?我做错了什么 我试着看看这个答案: 您应该使用ng repeat中的总线颜色作为所选的ng型号。这样,您就可以完全访问每个总线的选定颜色 <select ng-model="bus.color" ng-options=

我有两个动态对象数组。一个用于颜色,一个用于公共汽车。目标是为总线指定颜色。因此,使用ng重复代码create为每种颜色选择,然后使用ng change调用updatebus函数,传递颜色id。但是,它不起作用。颜色id始终未定义

如何为具有两个阵列的总线分配颜色?我做错了什么

我试着看看这个答案:


您应该使用ng repeat中的总线颜色作为所选的ng型号。这样,您就可以完全访问每个总线的选定颜色

<select ng-model="bus.color" 
    ng-options="color.name for color in colors" 
    ng-change="updatebus(bus)">
所有的赋值都是在html绑定中完成的,ng更改仅用于显示目的

请看一看,为了让它工作,我做了一些小改动:


希望有帮助这里有两个问题:

您输入了一个错误:bus.cid=id; 您在ng change中的表达式没有任何意义:updatebusbus,color.id。颜色什么颜色?他们有一大堆。 解决此问题的一种方法:

bus.colorid = id;

ng更改方法不是重复ng选项的一部分。它只定义一次,没有“颜色”变量。请与属性名称保持一致。您有bus.cid=id,但在总线数组中有colorid作为属性名。我认为您不希望updatebus调用中有color.id该作用域中不存在“color”。谢谢,这确实有帮助,但是的,我不希望存在bus.color。谢谢,是的,绑定到bus.colorid的第二个选择是正确的。
bus.colorid = id;
<select ng-model="myColor" 
ng-options="color.id as color.name for color in colors" 
ng-change="updatebus(bus, myColor)">
<select ng-model="bus.colorid" 
ng-options="color.id as color.name for color in colors" 
ng-change="updatebus(bus)">
$scope.updatebus = function(bus){
  //alert(bus.name); // undefined
  $scope.theBus = bus;
};