Javascript 在一个选择框中选择一个选项将更新其余选项
我刚刚开始用angular JS构建我的第一个应用程序,我遇到了一个障碍。我一直在尝试创建一个如下所示的页面: 我动态创建如下html代码所示的控件:Javascript 在一个选择框中选择一个选项将更新其余选项,javascript,angularjs,Javascript,Angularjs,我刚刚开始用angular JS构建我的第一个应用程序,我遇到了一个障碍。我一直在尝试创建一个如下所示的页面: 我动态创建如下html代码所示的控件: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> </head> <body> <h1>Compar
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h1>Compare Tickers</h1>
<hr/>
<div ng-controller="MainCtrl">
<ul>
<li id="control{{$index}}" ng-repeat="oneTickerInfo in tickerInfo">
Ticker Info : <input ng-model="oneTickerInfo.ticker">
<select id="selector{{$index}}" ng-model="caches.cache">
<option id="options{{$index}}" ng-repeat="cacheName in caches">{{cacheName.cache}}</option>
</select>
<select ng-model="boxes.box">
<option ng-repeat="boxName in boxes">{{boxName.box}}</option>
</select>
[<a href ng-click="colors.splice($index, 1)">X</a>]
</li>
<li>
[<a href ng-click="colors.push({})">add</a>]
</li>
</ul>
<hr/>
<div ui-view></div>
</div>
</body>
</html>
我很抱歉,因为我没有足够的声誉发布相同的图片,所以我无法发布这些图片
所以问题是,每当我尝试从第一个下拉列表中为缓存选择一个元素时,它也会填充第二个下拉列表。对于框的其他下拉列表也是如此。我没有正确使用ng模型
不知道发生了什么事。请帮忙!
谢谢大家! 您尝试过ng选项吗
<select ng-model="selectedBox" ng-options="boxObj.box for box in boxes">
</select>
主要问题是您在所有选择选项中共享ng模型的对象属性。相反,您需要为每个对象设置一个唯一的模型 将模型设置为
ng repeat
itemoneTickerInfo
中每个单独项目的属性。您还应该使用ng options
填充选择选项
<select ng-model="oneTickerInfo.cache"
ng-options="cache.cache as cache.cache for cache in caches"></select>
<select ng-model="oneTickerInfo.host"
ng-options="box.box as box.box for box in boxes"></select>
只要您的tickerInfo
对象具有这两个属性/值,就不需要在控制器中为select设置默认选项,因为对象本身将提供自己的默认值
您可以通过JSFIDLE或plunkr进行共享吗?从第一眼看,问题似乎出现在代码ng model=“caches.cache”中,它应该类似于ng model=“caches.cache[0]”类似地,我可以在jsfiddle中轻松识别其他问题。该解决方案回答了OP问题的严格解释。所以,我投了赞成票。但这并没有触及他们所面临问题的根源。我的回答也试图涵盖这一点。完全同意,@MarcKline这不仅仅是ng-options。谢谢。那很有帮助,太好了!如果这是帮助您解决问题的原因,请单击复选标记接受它。
$scope.selectedBox = "defaultBox";
<select ng-model="oneTickerInfo.cache"
ng-options="cache.cache as cache.cache for cache in caches"></select>
<select ng-model="oneTickerInfo.host"
ng-options="box.box as box.box for box in boxes"></select>