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

9 浏览
0 Comments

如何使用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}}"


0
0 Comments

问题的原因是在AngularJS中如何根据选择的更改来更新对象数组。解决方法是将busng-repeat中的颜色用作selectng-model。这样,您就可以完全访问每个公交车的选定颜色。

在HTML绑定中完成了所有的赋值操作,ng-change仅用于显示目的。

请查看链接,我做了一些小的更改以使其正常工作:http://plnkr.co/edit/SoBUK61121VrqT31Jihj?p=preview

希望能对您有所帮助。

我认为您不希望在updatebus调用中使用color.id。在该范围内不存在'color'。

谢谢,这确实有所帮助,但是是的,我不希望有bus.color

0
0 Comments

问题的原因是在代码中存在两个问题。首先,存在一个拼写错误,bus.cid应该是bus.colorid。其次,在ng-change表达式中使用了color.id,但是没有明确指定哪个color对象。修复方法是将bus.colorid赋值给id,并在ng-change表达式中使用myColor作为参数。

解决方法一是将bus.colorid赋值给id,然后在ng-change中使用myColor作为参数。

bus.colorid = id;

$scope.updatebus = function(bus){
  $scope.theBus = bus;
};

修复后的代码链接:http://plnkr.co/edit/571TY2dC8cmLSPA7AAIv?p=preview

感谢,是的,将第二个select绑定到bus.colorid上是更好的方法,这样如果buses有初始颜色值,下拉菜单将显示正确的值。

0