这是我的控制者:
function TestCtrl ($scope, sharedProperties, $resource){
var userDataProfile = sharedProperties.getUserDataProfile();
var userCreatedBoard = $resource('/boards?owner=:owner');
userCreatedBoard.query({'owner':userDataProfile.id}, function (result) {
console.log(result);
});
}
现在问题是在调用第三方服务及其异步后调用sharedProperties.setUserDataProfile()
。因此,当绑定TestCtrl
时,userDataProfile
实际上为空。如何处理这种情况,以便在调用sharedProperties.setUserDataProfile()
并为变量分配第3方服务的值后,只有我的控制器应该被绑定?
答案 0 :(得分:1)
我想你想看看决心:
http://www.youtube.com/watch?v=Kr1qZ8Ik9G8
这允许您在实例化控制器并触发routeChangeSuccess事件之前加载所有数据。
在angular docs中。
答案 1 :(得分:-1)
将变量传递给Angular.js控制器是没有意义的,这就是Scope变量的用途。
试试这个
window.activeTestCtrls = [];
window.sharedProperties = [];
function TestCtrl ($scope, $resource){
if (window.sharedProperties) this.createUserData(window.sharedProperties)
window.activeTestCtrls.push[this];
function createUserData(sharedProperties) {
var userDataProfile = sharedProperties.getUserDataProfile();
var userCreatedBoard = $resource('/boards?owner=:owner');
userCreatedBoard.query({'owner':userDataProfile.id}, function (result) {
console.log(result);
}
});
// and when you get your sharedproperties
function gotSharedProperties(sharedProperties) {
$.each(activeTestControllers, function(index,value) {
activeTestControllers[index].createUserData(sharedProperties)})
}
}