Javascript 如何使用AngularJS根据选择更改更新对象数组
我有两个动态对象数组。一个用于颜色,一个用于公共汽车。目标是为总线指定颜色。因此,使用ng重复代码create为每种颜色选择,然后使用ng change调用updatebus函数,传递颜色id。但是,它不起作用。颜色id始终未定义 如何为具有两个阵列的总线分配颜色?我做错了什么 我试着看看这个答案: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 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;
};