如何使用AngularJS根据选择更改来更新对象数组
如何使用AngularJS根据选择更改来更新对象数组
我有两个动态对象数组。一个是颜色,一个是公交车。目标是将颜色分配给公交车。因此,使用ng-repeat代码为每个颜色创建选择器,然后使用ng-change调用updatebus函数,传递颜色id。但是,它不起作用。颜色id始终是未定义的。\n我如何使用两个数组将颜色分配给公交车?我做错了什么?\n我尝试查看这个答案:获取ng-change选择的ng对象\nPlunker\n
Example - combining two arrays 公交车颜色: {{bus.name}} 公交车"{{theBus.name}}"的颜色id为"{{theBus.colorid}}"
问题的原因是在AngularJS中如何根据选择的更改来更新对象数组。解决方法是将bus
的ng-repeat
中的颜色用作select
的ng-model
。这样,您就可以完全访问每个公交车的选定颜色。
在HTML绑定中完成了所有的赋值操作,ng-change
仅用于显示目的。
请查看链接,我做了一些小的更改以使其正常工作:http://plnkr.co/edit/SoBUK61121VrqT31Jihj?p=preview
希望能对您有所帮助。
我认为您不希望在updatebus
调用中使用color.id
。在该范围内不存在'color'。
谢谢,这确实有所帮助,但是是的,我不希望有bus.color
。
问题的原因是在代码中存在两个问题。首先,存在一个拼写错误,bus.cid应该是bus.colorid。其次,在ng-change表达式中使用了color.id,但是没有明确指定哪个color对象。修复方法是将bus.colorid赋值给id,并在ng-change表达式中使用myColor作为参数。
解决方法一是将bus.colorid赋值给id,然后在ng-change中使用myColor作为参数。
bus.colorid = id;
解决方法二是直接将select绑定到bus.colorid上。
$scope.updatebus = function(bus){ $scope.theBus = bus; };
修复后的代码链接:http://plnkr.co/edit/571TY2dC8cmLSPA7AAIv?p=preview
感谢,是的,将第二个select绑定到bus.colorid上是更好的方法,这样如果buses有初始颜色值,下拉菜单将显示正确的值。