Hal*_*991 10 javascript angularjs
我想要做的是有三个不同的<select>菜单,它们都将被绑定到相同的数据中.更改第一个选择菜单,将更改菜单2和3的数据.
这是我的控制器内部:
$scope.data = [
{
"id" : "0",
"site" : "Brands Hatch",
"buildings" : [
{ "building" : "Building #1" },
{ "building" : "Building #2" },
{ "building" : "Building #3" }
],
"floors" : [
{ "floor" : "Floor #1" },
{ "floor" : "Floor #2" },
{ "floor" : "Floor #3" }
]
},{
"id" : "1",
"site" : "Silverstone",
"buildings" : [
{ "building" : "Building #4" },
{ "building" : "Building #5" },
{ "building" : "Building #6" }
],
"floors" : [
{ "floor" : "Floor #4" },
{ "floor" : "Floor #5" },
{ "floor" : "Floor #6" }
]
}
];
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止从参考文献中尝试过的,它使用了我需要的相同想法:http://codepen.io/adnan-i/pen/gLtap
当我从第一个选择菜单中选择"Brands Hatch"或"Silverstone"时,其他两个菜单将更改/更新数据以与正确的数据相对应.我正在使用$ watch来监听我从上面的CodePen链接中获取的更改.
这是观看脚本(未修改,显然不起作用):
$scope.$watch('selected.id', function(id){
delete $scope.selected.value;
angular.forEach($scope.data, function(attr){
if(attr.id === id){
$scope.selectedAttr = attr;
}
});
});
Run Code Online (Sandbox Code Playgroud)
据我所知,这会删除当前有关更改的数据,然后循环遍历$ scope.data,如果attr.id与传递给函数的id匹配,它会将数据推回到更新视图的范围.我只是坚持构建这个,并希望得到一些指导和帮助,因为我是AngularJS的新手.谢谢!:)
jsFiddle完整的工作,如果有人可以提供帮助:http: //jsfiddle.net/sgdea/
Joh*_*ter 17
看看我在这里做了什么:http://jsfiddle.net/sgdea/2/
您根本不需要使用$watch
- 您只需要为每个相关选择引用输入父项中的选择.
注意ng-options
第二个和第三个选择引用selected.site
是如何由第一个选择设置的:
<div ng-app="myApp" ng-controller="BookingCtrl">
<select ng-model="selected.site"
ng-options="s.site for s in data">
<option value="">-- Site --</option>
</select>
<select ng-model="selected.building"
ng-options="b.building for b in selected.site.buildings">
<option value="">-- Building --</option>
</select>
<select ng-model="selected.floor"
ng-options="f.floor for f in selected.site.floors">
<option value="">-- Floor --</option>
</select>
</div>
Run Code Online (Sandbox Code Playgroud)
我在javascript中所做的就是删除你的$watch
:
var myApp = angular.module( 'myApp', [] );
myApp.controller( 'BookingCtrl', ['$scope', '$location', function ( $scope, $location ) {
$scope.selected = {};
$scope.data = [
{
"id" : "0",
"site" : "Brands Hatch",
"buildings" : [
{ "building" : "Building #1" },
{ "building" : "Building #2" },
{ "building" : "Building #3" }
],
"floors" : [
{ "floor" : "Floor #1" },
{ "floor" : "Floor #2" },
{ "floor" : "Floor #3" }
]
},{
"id" : "1",
"site" : "Silverstone",
"buildings" : [
{ "building" : "Building #4" },
{ "building" : "Building #5" },
{ "building" : "Building #6" }
],
"floors" : [
{ "floor" : "Floor #4" },
{ "floor" : "Floor #5" },
{ "floor" : "Floor #6" }
]
}
];
}]);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8023 次 |
最近记录: |