我希望通过AJAX($ http)请求立即获取所有数据并应用于所有控制器
我从谷歌中选择了这个代码它显示我必须为每个控制器提出请求我是否可以在ajax调用中获取数据并根据控制器应用对象我已尝试工厂角度但它没有工作请帮助我找到了一种方法,我可以立即获取数据并更新控制器中的所有数据
<p>Today's welcome message is:</p>
<h1>{{myWelcome}}</h1>
</div>
<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
$http.get("welcome.htm")
.then(function(response) {
$scope.myWelcome = response.data;
});
});
</script>
谢谢。
答案 0 :(得分:1)
根据您的评论,这将有效:
mainApp.controller('ABC',function($rootScope){
$scope.somethingHappened = function(){
$rootScope.$emit('valueChanged',your_data_to_be_passed)
}
})
mainApp.controller('DEF',function($rootScope){
$rootScope.$on('valueChanged',function(event,data){
console.log(data) // you'll see your_data_to_be_passed
})
})
由于controllers
不相关,因此您应该更喜欢$rootScope
个事件,而不是$scope.$broadcast
或$scope.$emit
。您可以在在线教程中获得有关它们的更多详细信息
答案 1 :(得分:0)
您可以使用$rootScope
代替
<p>Today's welcome message is:</p>
<h1>{{myWelcome}}</h1>
<script>
var app = angular.module('myApp', []);
app.run(function($rootScope){
$http.get("welcome.htm")
.then(function(response) {
$rootScope.myWelcome = response.data;
});
})
app.controller('myCtrl', function($scope, $http) {
// Here watch for scope
$scope.$watch("myWelcome", function(value){
console.log(value)
})
});
</script>
答案 2 :(得分:0)
你可以使用localStorage
并使用JSON(stringify和parse)方法,如果数据不是字符串,如果它的对象访问属性,如果它的数组访问索引。
<script>
var app = angular.module('myApp', []);
app.run(function($rootScope){
$http.get("welcome.htm")
.then(function(response) {
localStorage.setItem('data', JSON.stringify(response));
});
})
app.controller('anotherCtrl', function($scope, $http) {
$scope.myWelcome = JSON.parse(getItem('data'));
/*or you can do this
var full_data = JSON.parse(getItem('data'));
(object)$scope.myWelcome = full_data.[some_property];
(array of objects)$scope.myWelcome = full_data[index].[some_property];
(just array) $scope.myWelcome = full_data[index]
*/
});
</script>