Rumah > Soal Jawab > teks badan
Kerana didapati azam bukan sahaja dicetuskan apabila dimuatkan, tetapi juga dicetuskan apabila kembali, tetapi pengawal yang diperolehi tidak dikemas kini apabila kembali.
Dalam contoh ini, perkara yang diperoleh dengan tekad juga dimasukkan ke dalam perkhidmatan untuk mendapatkannya Saya pada asalnya ingin mencuba menukar kepada kaedah suntikan untuk melihat sama ada keadaannya masih tidak berjaya, saya merancang untuk meletakkannya dalam perkhidmatan atau menyelesaikan Data hanya digunakan apabila dimuatkan.
Jadi saya ingin mencari contoh untuk mengujinya, tetapi suntikan selalu gagal.
Tiada ujian disuntik di sini Ralat akan dilaporkan apabila disuntik.
http://jsfiddle.net/abelmakihara/x99b2o2p/3/
高洛峰2017-05-15 17:04:13
Itu sahaja saya melihatnya dengan teliti. Terdapat sesuatu yang salah dengan pemahaman anda tentang ngRoute
Saya telah menukarnya
app.factory('rulesFactory', ['$q', '$timeout',
function($q, $timeout) {
return function() {
return $q(function(resolve){
$timeout(function() {
//这里如果期待返回值,就要用$q封装,并resolve
resolve('Change time in seconds:' + new Date().getTime() / 1000);
}, 1000)
});
};
}
]);
$routeProvider
.when('/', {
action: 'index',
resolve: {
//这里的resolve真对的是该路由自己的controller
'test': ['rulesFactory', function(rulesFactory) {
return rulesFactory();
}]
},
//所以一定要定义一个自己的AController
controller: 'AController',
template: '<h3>{{test}}</h3>'
})
.when('/page', {
action: 'page',
resolve: {
'test': ['rulesFactory', function(rulesFactory) {
return rulesFactory();
}]
},
controller: 'BController',
template: '<h3>{{test}}</h3>'
})
//然后,AController,BController就可以注入test了,并且test的值就是上面resolve的那堆字符串
app.controller('AController', ['$scope', 'test',
function($scope, test) {
$scope.test = test;
}
]);
app.controller('BController', ['$scope', 'test',
function($scope, test) {
$scope.test = test;
}
]);