1

这是我的控制器:

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()在调用 3rd 方服务及其异步后调用问题。因此,当TestCtrl被绑定时,userDataProfile实际上为空。我该如何处理这种情况,以便在sharedProperties.setUserDataProfile()调用并从 3rd 方服务为变量分配一个值之后,只有我的控制器应该被绑定?

4

2 回答 2

1

我想你想看看解决:

http://www.youtube.com/watch?v=Kr1qZ8Ik9G8

这允许您在实例化控制器并触发 routeChangeSuccess 事件之前加载所有数据。

角度文档中。

于 2013-07-19T13:08:20.937 回答
-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)})
  }
}
于 2013-07-19T13:11:54.650 回答