gpt4 book ai didi

javascript - AngularJS:从选择选项更新表内容

转载 作者:行者123 更新时间:2023-12-03 06:09:52 24 4
gpt4 key购买 nike

目前,我正在尝试更加熟悉 AngularJS 和单页应用程序。我觉得我正在取得一些进展,这给我带来了力量,因为我发现 WPF 相对令人困惑。

但是,我觉得我对 AngularJS 应该做什么有一个严重的误解。为了更简单地提出我的问题,我构建了一个基本的示例网站,以便我可以练习。

该网站的格式类似于苏打水产品的菜单,用户可以选择不同的 vendor ,然后选择可用的尺寸来查看产品的价格。这只是举例,价格和尺寸(IE,网页上显示的数据)并不意味着正确。正确的是我显示此类信息的方法和格式。

我的问题是,我似乎无法从我的模板 URL 访问范围的“selectedVendor”ng-model(或者至少不能“传统地”访问,即通过简单地输入名称)。这会破坏我的代码,因为我需要从所选 vendor 处获取可用尺寸的列表。

我查看了其他几个类似的问题,但提供的所有答案似乎都表明 ng-repeat 选项是违规方。抱歉,如果这是重复的。

这是我的代码:

index.html:

<!DOCTYPE html>
<html>
<head>
<title>Menu - Beverages</title>
<script src="http://code.angularjs.org/1.2.13/angular.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/angular-ui-router/0.2.8/angular-ui-router.min.js"></script>
<script src="app.js"></script>
</head>
<body ng-app="routerApp">
<div id="main">
<div ui-view></div>
</div>
</body>
</html>

app.js:

var routerApp = angular.module('routerApp', ['ui.router']).run(['$rootScope', '$state', function($rootScope, $state){$rootScope.$state = $state;}]);

routerApp.config(function($stateProvider, $urlRouterProvider){
$urlRouterProvider.otherwise('/home')
$stateProvider

.state('home',{
url: '/home',
templateUrl: 'beverages_home.html',
controller: 'beveragesController'
})
})
routerApp.controller('beveragesController', function($scope){
$scope.vendors=[
{
Name: 'Pepsi-Cola',
Sizes:{
Small:{
Size:'8oz',
Price:'0.50'
},
Medium:{
Size:'16oz',
Price:'1.50'
},
Large:{
Size:'24oz',
Price:'2.50'
}
}
},
{
Name: 'Coke',
Sizes:{
Small:{
Size:'Teaspoon',
Price:'4.50'
},
Medium:{
Size:'Tablespoon',
Price:'8.50'
},
Large:{
Size:'Quart',
Price:'25.50'
}
}
},
{
Name: 'A&W',
Sizes:{
Small:{
Size:'Half Gallon',
Price:'0.25'
},
Medium:{
Size:'1 Liter',
Price:'1.00'
},
Large:{
Size:'2 Liter',
Price:'1.25'
}
}
}
]
$scope.units=[ 'Dollars', 'Euro', 'Yen'
]
})

beverages_home.html:

<table>
<tr>
<th>Vendor</th>
<th>Size</th>
<th>Price</th>
</tr>
<tr>
<td><select ng-model="selectedVendor" ng-options="vendor as vendor.Name for vendor in vendors" ng-init="selectedVendor = vendors[0]"></select></td>
<td><select ng-model="selectedSize" ng-options="size as size.Size for size in selectedVendor.Sizes" ng-init="selectedSize = vendors[0].Sizes[0]"></select></td>
<td><select ng-model="selectedUnits" ng-options="unit for unit in units" ng-init="selectedUnits = units[0]"></select></td>
</tr>
<tr>
<td>{{selectedVendor.Name}}</td>
<td>{{selectedSize.Size}}</td>
<td>{{selectedSize.Price}} {{selectedUnits}}</td>
</tr>
</table>

目前,我的网页能够在 vendor 和价格单位之间进行选择。但是,我无法查看或选择尺寸,因此价格字段永远不会被填充。有人能指出我正确的方向吗?我不在乎是否需要重组任何东西,我只想以正确的方式学习,或者以最干净的方式来实现最大的组织性和可扩展性。

提前致谢!

最佳答案

我认为你的问题出现是因为 Sizes 不是一个数组而是一个对象,因此你无法访问你正在尝试的方式。尝试使用尺寸数组!

关于javascript - AngularJS:从选择选项更新表内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39371713/

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