Javascript 角度,使用预填充数据。运行,然后传递到工厂
新来的。我正在尝试将数据传递到工厂以供使用。我试图在angular中使用$http以特定顺序触发事件。我被指向使用.run进行第一次填充的方向,将其传递到工厂,然后工厂将其传递到控制器。工厂有一个功能,允许我“刷新”与控制器共享的数据 我在设置刷新功能时得到了一些很大的帮助,但我正在努力让数据最初填充。以下是我的尝试:Javascript 角度,使用预填充数据。运行,然后传递到工厂,javascript,angularjs,Javascript,Angularjs,新来的。我正在尝试将数据传递到工厂以供使用。我试图在angular中使用$http以特定顺序触发事件。我被指向使用.run进行第一次填充的方向,将其传递到工厂,然后工厂将其传递到控制器。工厂有一个功能,允许我“刷新”与控制器共享的数据 我在设置刷新功能时得到了一些很大的帮助,但我正在努力让数据最初填充。以下是我的尝试: .run("getDataForLevels", function($http){ var getIt = $http.get("/assets/images/gener
.run("getDataForLevels", function($http){
var getIt = $http.get("/assets/images/generated.json")
.success(function(data){
return data;
});
return getIt;
})
.factory("UserService", function($http, getDataForLevels) {
dataFactory = getDataForLevels;
dataFactory.currentData = null;
dataFactory.update = function () {
return $http.get("/assets/images/generated.json")
.success(function(data){
dataFactory.currentData = data;
return data;
});
};
return dataFactory;
});
然后,我将UserService的依赖项添加到控制器,并将数据传递到控制器。我似乎在打赌这是一个错误。任何/所有的帮助都将不胜感激。谢谢 你不能这样做:
.run("getDataForLevels", function($http){
var getIt = $http.get("/assets/images/generated.json")
.success(function(data){
return data;
});
return getIt;
})
它只接受一个参数作为函数
您可以这样做:
.run(function($http,$rootScope){
$http.get("/assets/images/generated.json")
.success(function(data){
$rotScope.data=data;
});
})
.factory("UserService", function($http, $rootScope) {
dataFactory.update = function () {
return $http.get("/assets/images/generated.json")
};
return dataFactory;
});
var dataFactory = $rootScope.data;
dataFactory.currentData = null;
UserService.update ()
.success(function(data, status, headers) {
console.log(data);
})
.error(function(data, status, headers, config) {
console.error('error in loading File list');
});
在控制器中,插入依赖项并执行以下操作:
.run(function($http,$rootScope){
$http.get("/assets/images/generated.json")
.success(function(data){
$rotScope.data=data;
});
})
.factory("UserService", function($http, $rootScope) {
dataFactory.update = function () {
return $http.get("/assets/images/generated.json")
};
return dataFactory;
});
var dataFactory = $rootScope.data;
dataFactory.currentData = null;
UserService.update ()
.success(function(data, status, headers) {
console.log(data);
})
.error(function(data, status, headers, config) {
console.error('error in loading File list');
});
这似乎不会使初始的get fire在初始化之前启动,因为如果我在控制器中放入日志,userService返回将返回为未定义。我需要在工厂使用之前填充数据的东西,比如a.then.This。这会删除控制器之间的双向数据绑定,我只想在控制器请求并使用数据之前将数据加载到控制器中,然后能够刷新两个控制器之间使用的数据。似乎每个控制器都有一个控制器你能给我看看控制器吗?在控制器请求并使用数据之前加载数据是什么意思?在请求完成之前,您不可能也不希望延迟控制器的创建。如果您使用的是
dataFactory.currentData
,则对象将在更新中更改。如果您将dataFactory
本身放在您的作用域中,那么您应该能够绑定到dataFactory.currentData.userName
。