【发布时间】:2016-02-09 13:54:31
【问题描述】:
Stack Overflow 上与填充下拉菜单相关的许多解决方案包括 $scope。
我的第二个下拉菜单取决于我的第一个下拉菜单的值,因此我在第一个 HTML 上使用 ng-changeselect 将模型 ID 参数传递到第二个下拉菜单的函数中。
第一个下拉 HTML 和 Angular JS:
<select data-ng-controller="addAssetController as addAssetCtrl" id="functionalOrg" data-ng-model="addAssetFormCtrl.functionalOrg.id" ng-change="addAssetCtrl.getLocations(addAssetFormCtrl.functionalOrg.id)">
<option data-ng-repeat="functionalOrg in addAssetCtrl.functionalOrgs | orderBy:'id' track by $index" value="{{functionalOrg.id}}">
{{functionalOrg.id}} - {{functionalOrg.account}}
</option>
</select>
因此ng-change:
ng-change="addAssetCtrl.getLocations(addAssetFormCtrl.functionalOrg.id)"
-
var vm = this;
functionalOrganisationRepository.getFunctionalOrganisation().then(function (results) {
vm.functionalOrgs = results;
}, function (error) {
vm.error = true;
vm.errorMessage = error;
});
第二个下拉式 HTML 和 Angular:
<select data-ng-controller="addAssetController as addAssetCtrl" id="location" data-ng-model="addAssetFormCtrl.location.id">
<option data-ng-repeat="location in addAssetCtrl.locations | orderBy:'id' track by $index" value="{{location.id}}">
{{location.id}} - {{location.address6}}
</option>
</select>
-
vm.getLocations = function(id) {
console.log("Functional org ID:" + id);
locationRepository.getLocation(id).then(function (results) {
vm.locations = results;
}, function (error) {
vm.error = true;
vm.errorMessage = error;
});
}
假设我的服务层没问题,并带回了一个 JSON 对象,里面包含我需要的一切,那么问题可能是什么? vm.getLocations 函数肯定会被调用,因为正在打印我的控制台日志。服务层也很好,因为我的命令提示符会记录一个 JSON 对象。
我的问题是如何从getLocations 返回的任何 JSON 中填充我的第二个下拉列表?因此,我不想在 Angular 中使用 $scope。
【问题讨论】:
-
请创建一个 plunker 并提供
-
方法 locationRepository.getLocation(id) 检索列表?
-
每次选择都会重复“ng-controller”属性。只在父元素上放置一次属性!
-
@manzapanza 将其发布为您的答案。
标签: angularjs json angularjs-ng-repeat