我正在尝试通过API从API加载作业并将其传递给控制器。
.when('/jobs/edit/:id', {
templateUrl: 'partials/jobs/edit',
controller: 'JobCtrl',
resolve: function($routeParams, Job){
var jobId = $routeParams.id;
return {
job: function(){
return Job.get({ id: jobId});
}
};
}
})
控制器:
angular.module('App')
.controller('JobCtrl', function ($scope, Job, $location, $routeParams) {
$scope.newJob = data.job; //does not work
$scope.errors = {};
$scope.save = function (form) {
//...
};
});
型号:
angular.module('App')
.factory('Job', function ($resource) {
return $resource('/api/jobs/:id', {
id: '@id'
}, { //parameters default
update: {
method: 'PUT'
}
});
});
如何获取控制器中的数据?路线中的resolve
区块甚至没有被执行。
编辑:此页面包含许多不同类型解析的示例: http://phillippuleo.com/articles/angularjs-timing-multiple-resource-resolves-ngroute-and-ui-router
答案 0 :(得分:0)
您似乎解决了实施不正确的问题 您可以尝试更改路由器,如:
.when('/jobs/edit/:id', {
templateUrl: 'partials/jobs/edit',
controller: 'JobCtrl',
resolve: {
job: function (Job, $routeParams) {
return Job.get({id: $routeParams.id});
}
}
})
通过将Job
包含在依赖项中来获取控制器中的已解析数据:
angular.module('App')
.controller('JobCtrl', function ($scope, job, $location, $routeParams) {
// job is resolved here
$scope.job = job;
$scope.newJob = {};
$scope.errors = {};
$scope.save = function (form) {
//...
};
});
<强>已更新强>
如果您想使用JobCtrl
进行创建和编辑,则可以在重新设定的null
中为新作业页面返回job
。这意味着:在你创建一个工作之前,还没有任何工作。
.when('/jobs/new', {
templateUrl: 'partials/jobs/new',
controller: 'JobCtrl',
resolve: {
job: function () {
return null;
}
}
})