gpt4 book ai didi

javascript - 如何在 AngularJS 中从不同 Controller 传递所选值

转载 作者:行者123 更新时间:2023-12-02 15:19:03 26 4
gpt4 key购买 nike

我昨天开始学习AngularJS。我正在尝试使用它来创建一个使用简单 Web 服务的 Web 应用程序。

现在我有三个选择框。

首先选择:orgType ->在加载时从服务获取所有 orgType(我得到了这个工作)

第二个选择:state->从本地json对象填充一堆状态(到这里为止都很好)

第三个选择:城市->从网络服务获取所选状态的所有城市(这是我陷入困境的地方,我无法在状态更改时填充第三个选择)。

这是我现在的代码

HTML:

<body>
<div id='test'>

<select class="form-control" ng-controller="typeController" >
<option ng-repeat="types in row" >{{types.type}}</option>

</select>

<select class="form-control" ng-controller="statesController" >
<option ng-repeat="state in states" >{{state.abbreviation}}</option>

</select>

<select class="form-control" ng-controller="citiesController" >
<option ng-repeat="city in cities" >{{city.city}}</option>

</select>

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

Controller .js

    var myApp=angular.module('myApp',[]);

myApp.controller('typeController',['$scope','$http',function ($scope,$http){
$http.get('someURL path=%2FOrgTypes').success(function(data){
var jsonData = $.xml2json(data);
console.log(jsonData.row);
$scope.row=jsonData.row;

});
}]);

myApp.controller('statesController',['$scope','$http',function ($scope,$http){
$http.get('data/states.json').success(function(data){

console.log('states',data);
$scope.states=data;

});
}]);

myApp.controller('citiesController',['$scope','$http',function changeCity($scope,$http){
$http.get('someURL ?path=/Cities?state=MD').success(function(data){
//hardcoding city to MD for now
var jsonData = $.xml2json(data);
console.log('cities', jsonData);
$scope.cities=jsonData.row;
});

}]);

感谢您的帮助!

最佳答案

创建一个存储您的州缩写的服务

.factory('myFactory', function() {
var state = '';
return {
setState: function(val) {
state = val;
},
getState: function() {
return state;
}
}
}

然后你就可以在你的 Controller 中观察这个服务中的 getState 函数了。

$scope.$watch(function () {
return myFactory.getState();
}, function (val) {
// execute your get method with the new value or whatever you want to do
});

当然,请确保正确注入(inject)所有依赖项。

此外,为什么所有这些选择都需要自己的 Controller ?将所有 http 调用移至服务并让它们共享相同的范围。

关于javascript - 如何在 AngularJS 中从不同 Controller 传递所选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235600/

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