等待控制器 运行 其所有代码
Wait for a controller to run all of its code
我想知道是否有一种方法可以让控制器 2 等待控制器 2 完成 运行 它的所有代码。
我正在制作移动应用程序,当用户登录时,该应用程序会转到主页,该主页有一个加载 4 个控制器的选项卡,但它们同时加载,控制器 1 加载一部分,然后控制器 2 显示加载更多,问题是我正在 HTTP
请求获取数据并用数据填充 HTML。
aldro_app.controller('ctrTabBarOpciones', function($scope, compartidosFactory, $http, $rootScope){
console.log('controller tabbar');
$scope.comprobarTab = function (tab) {
compartidosFactory.tab = tab;
}
var id = parseInt(getVariable("idcontrato"));
var url = "http://api/info";
$http({
url : url,
method: "POST",
data: {id_contrato: id},
headers:{
"Content-Type":"application/json;charset=utf-8",
"Authorization": "Bearer " + getVariable("token")
}
})
.then(function(response){
console.log("Facturas del contrato -> " + id + "son: " + response.data);
setVariable("facturas" , JSON.stringify(response.data));
})
});
这是第一个加载的控制器(我知道它是因为在控制台上首先显示的是 "controller tabbar"),我正在使用 setVariable
函数,问题来了
aldro_app.controller('ctrInicio', function ($scope,$http, $rootScope) {
/* Http para retirar las ultimas facturas del contrato */
console.log("Inicio controller");
//console.log(x.facturas.length);
var objeto = getVariable("facturas");
deleteVariable("facturas");
var listado_facturas = JSON.parse(objeto);
var arr_length = listado_facturas.facturas.length;
});
我收到 Cannot read property 'facturas' of undefined
错误,因为我的 ctrTabbarOpciones
首先加载,然后我的 ctrInicio
显示 运行 他的代码需要尚未加载的代码已在 ctrTabbarOpciones
中执行 所以,如何告诉我的控制器等待另一个控制器? (抱歉语法错误)。
您可以从第一个控制器广播事件并在第二个控制器上收听。 3
aldro_app.controller('ctrTabBarOpciones', function($scope, compartidosFactory, $http, $rootScope){
console.log('controller tabbar');
$scope.comprobarTab = function (tab) {
compartidosFactory.tab = tab;
}
var id = parseInt(getVariable("idcontrato"));
var url = "http://api/info";
$http({
url : url,
method: "POST",
data: {id_contrato: id},
headers:{
"Content-Type":"application/json;charset=utf-8",
"Authorization": "Bearer " + getVariable("token")
}
})
.then(function(response){
console.log("Facturas del contrato -> " + id + "son: " + response.data);
setVariable("facturas" , JSON.stringify(response.data));
$rootScope.$broadcast('received data'); // broadcast event
})
});
aldro_app.controller('ctrInicio', function ($scope,$http, $rootScope) {
/* Http para retirar las ultimas facturas del contrato */
console.log("Inicio controller");
//console.log(x.facturas.length);
$rootScope.$on('receivedData', function(){
var objeto = getVariable("facturas");
deleteVariable("facturas");
var listado_facturas = JSON.parse(objeto);
var arr_length = listado_facturas.facturas.length;
})
});
我想知道是否有一种方法可以让控制器 2 等待控制器 2 完成 运行 它的所有代码。
我正在制作移动应用程序,当用户登录时,该应用程序会转到主页,该主页有一个加载 4 个控制器的选项卡,但它们同时加载,控制器 1 加载一部分,然后控制器 2 显示加载更多,问题是我正在 HTTP
请求获取数据并用数据填充 HTML。
aldro_app.controller('ctrTabBarOpciones', function($scope, compartidosFactory, $http, $rootScope){
console.log('controller tabbar');
$scope.comprobarTab = function (tab) {
compartidosFactory.tab = tab;
}
var id = parseInt(getVariable("idcontrato"));
var url = "http://api/info";
$http({
url : url,
method: "POST",
data: {id_contrato: id},
headers:{
"Content-Type":"application/json;charset=utf-8",
"Authorization": "Bearer " + getVariable("token")
}
})
.then(function(response){
console.log("Facturas del contrato -> " + id + "son: " + response.data);
setVariable("facturas" , JSON.stringify(response.data));
})
});
这是第一个加载的控制器(我知道它是因为在控制台上首先显示的是 "controller tabbar"),我正在使用 setVariable
函数,问题来了
aldro_app.controller('ctrInicio', function ($scope,$http, $rootScope) {
/* Http para retirar las ultimas facturas del contrato */
console.log("Inicio controller");
//console.log(x.facturas.length);
var objeto = getVariable("facturas");
deleteVariable("facturas");
var listado_facturas = JSON.parse(objeto);
var arr_length = listado_facturas.facturas.length;
});
我收到 Cannot read property 'facturas' of undefined
错误,因为我的 ctrTabbarOpciones
首先加载,然后我的 ctrInicio
显示 运行 他的代码需要尚未加载的代码已在 ctrTabbarOpciones
中执行 所以,如何告诉我的控制器等待另一个控制器? (抱歉语法错误)。
您可以从第一个控制器广播事件并在第二个控制器上收听。 3
aldro_app.controller('ctrTabBarOpciones', function($scope, compartidosFactory, $http, $rootScope){
console.log('controller tabbar');
$scope.comprobarTab = function (tab) {
compartidosFactory.tab = tab;
}
var id = parseInt(getVariable("idcontrato"));
var url = "http://api/info";
$http({
url : url,
method: "POST",
data: {id_contrato: id},
headers:{
"Content-Type":"application/json;charset=utf-8",
"Authorization": "Bearer " + getVariable("token")
}
})
.then(function(response){
console.log("Facturas del contrato -> " + id + "son: " + response.data);
setVariable("facturas" , JSON.stringify(response.data));
$rootScope.$broadcast('received data'); // broadcast event
})
});
aldro_app.controller('ctrInicio', function ($scope,$http, $rootScope) {
/* Http para retirar las ultimas facturas del contrato */
console.log("Inicio controller");
//console.log(x.facturas.length);
$rootScope.$on('receivedData', function(){
var objeto = getVariable("facturas");
deleteVariable("facturas");
var listado_facturas = JSON.parse(objeto);
var arr_length = listado_facturas.facturas.length;
})
});