Rumah > Soal Jawab > teks badan
ui-router 预加载 resolve
memperoleh data, bagaimana untuk menyuntiknya ke dalam pengawal?
Catatan:
Dalam $state
, saya mengimport fail pengawal melalui controllerUrl
.
Versi penghala ui saya ialah 0.4.2
.
Kod penghalaan ↓
$stateProvider.state('dashboard', {
url: '/dashboard',
templateUrl: 'views/dashboard/index.html',
resolve: {
getList: function ($stateParams, $NetRequest){
var options = {type: 'charts'};
$NetRequest.post(options).then(function($ref){
return $ref.data;
});
}
},
controllerUrl: 'views/dashboard/index',
controller: 'DashboardController',
controllerAs: 'vm'
});
Kod Perkhidmatan ↓
service.post = function($options){
var deferred = $q.defer();
// 省略请求函数...
return deferred.promise;
};
Jika anda menyuntik getList
terus ke dalam pengawal pada masa ini, hasilnya akan menjadi undefined
.
Saya membaca dokumentasi rasmi dan terdapat parameter $inject
, tetapi malangnya tiada contoh saya tidak tahu cara menggunakannya.
仅有的幸福2017-05-15 17:13:59
Selesai masalah, caranya sebenarnya sangat mudah - -
$stateProvider.state('dashboard', {
url: '/dashboard',
templateUrl: 'views/dashboard/index.html',
resolve: {
getList: function ($stateParams, $NetRequest){
var options = {type: 'charts'};
return $NetRequest.post(options);
// 因为 $NetRequest.post 已经返回了结果
}
},
controllerUrl: 'views/dashboard/index',
controller: 'DashboardController',
controllerAs: 'vm'
});