如何将已解析的数据注入控制器?

时间:2014-03-02 15:56:30

标签: angularjs

我可以看到在访问此路由之前在loadProfile中调用RESTful服务....

$routeProvider.when('/editProfile', {
    templateUrl: '/views/user/editprofile',
    controller: 'UserCtrl',
    access: access.user,
    resolve: {
        userProfile: function(UserSvc){
            UserSvc.loadProfile(function(userProfile){ return userProfile });
        }
    }
});

那么如何将数据注入我的用户控制器?

更新1

Matt Way告诉我如何在我的控制器中注入已解析的数据。但是,我立即收到错误“Unknown Provider:userProfileProvider”。基于其他一些类似的问题,我决定尝试从相关视图中删除ng-controller =“UserCtrl”属性。我的/ editProfile路由的未知提供程序错误消失,但随后开始出现在此控制器的所有其他视图/路由上。

更新2

我在egghead.io上观看了几个视频,发现我能够访问$ route中的承诺数据。将此添加到我的控制器并瞧!

if($route.current.locals.userProfile){
    $scope.userProfile = $route.current.locals.userProfile;
}

2 个答案:

答案 0 :(得分:0)

只需包含解析项名称作为控制器功能的输入。例如:

myApp.controller('UserCtrl', ['$scope', 'userProfile', 
function($scope, userProfile) {
    // Controller code goes here
}]);

答案 1 :(得分:0)

您可以退回已加载的个人资料吗?我认为这就是你收到未知提供商错误的原因。

function (UserSvc) {
    return UserSvc.loadProfile(function(userProfile) { return userProfile });
}

作为旁注,我看到你的评论粘贴你的控制器功能,看起来有很多依赖。可能更好地减少所需的协作者数量。