gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:31:50 28 4
gpt4 key购买 nike

我有两个动态对象数组。一种用于颜色,一种用于公共(public)汽车。目标是为总线分配颜色。因此,使用 ng-repeat 代码为每种颜色创建选择,然后使用 ng-change 调用 updatebus 函数,传入颜色 id。但是,这不起作用。颜色 ID 始终未定义。

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

我尝试查看这个答案:getting the ng-object selected with ng-change

Plunker

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Example - combining two arrays</title>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.27/angular.min.js"></script>
</head>
<body ng-app="selectExample">
<script>
angular.module('selectExample', [])
.controller('ExampleController', ['$scope', function($scope) {

$scope.colors = [
{name:'black', id:'a'},
{name:'white', id:'b'},
{name:'red', id:'c'},
{name:'blue', id:'d'},
{name:'yellow', id:'e'}
];

$scope.buses = [
{name:'bus 1', colorid:''},
{name:'bus 2', colorid:''}
];

$scope.theBus = $scope.buses[1]; // red

$scope.updatebus = function(bus, id){
//alert(id); // undefined
$scope.theBus = bus;
bus.cid = id;
};
}]);
</script>
<div ng-controller="ExampleController">

<p>
Bus Color:
<div ng-repeat="bus in buses">
{{bus.name}}
<select ng-model="myColor"
ng-options="color.name for color in colors"
ng-change="updatebus(bus, color.id)">
<option value="">-- choose color --</option>
</select>
<p>
</div>
<div>
the bus "{{theBus.name}}" has color id "{{theBus.colorid}}"
</div>

</div>
</body>
</html>

最佳答案

这里有两个问题:

  • 您有一个拼写错误:bus.cid = id;
  • 并且您在 ng-change 中的表达式没有任何意义:updatebus(bus, color.id)颜色?哪种颜色?有一大堆。

解决此问题的一种方法:

bus.colorid = id;
<select ng-model="myColor" 
ng-options="color.id as color.name for color in colors"
ng-change="updatebus(bus, myColor)">

更新了 Plunkr:http://plnkr.co/edit/571TY2dC8cmLSPA7AAIv?p=preview

或者只是将您的选择权绑定(bind)到bus.colorid(我想说这实际上是更好的方法,因为如果您的总线具有初始颜色值,它将允许下拉列表显示正确的值):

<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;
};

关于javascript - 如何使用 AngularJS 根据选择更改更新对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28223096/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com