我有一个非常简单的$ modal功能,可以打开弹出窗口并执行简单的get()来显示信息。我得到了弹出窗口,但我无法获得正确的API调用服务。
这是我的ui路由页面:
.state('rates.rate.runexperiment', {
url: "/runexperiment",
onEnter: ['$stateParams', '$state', '$modal', function($stateParams, $state, $modal){
$modal.open({
templateUrl: "templates/ExpsResults.html",
controller: ['$scope', 'ExpsService', function($scope, ExpsService) {
$scope.expResults = null;
$scope.getExpResults = function(){
ExpsService.getExpResults('1000').get().then(function(response){
$scope.expResults = response;
});
};
$scope.dismiss = function() {
$scope.$dismiss();
};
$scope.getExpResults();
}]
}).result.then(function(){
if (result) {
return $state.transitionTo('rates.rate');
}
});
}]
})
我尝试将服务注入放在onEnter部分但不占优势。当用户点击弹出按钮时,我在控制台中得到了这个:
TypeError: undefined is not a function at
ExpsService.getExpResults('1000').get().then(function(response){
这让我相信这个控制器在我的服务目录中无法访问我的ExpsService(在我的角应用程序中,其他任何地方都可以使用它。)
这是我的服务电话,我正在使用Restangular:
expResults = null,
getExpResults: function(expId){
var self=this;
return Restangular.one('rates/exp', expId).get().then(function(response){
self.expResults = response;
$log.debug('getExpResults', self.self.expResults);
return self.expResults;
});
},
将我的控制器置于其自己的文件并以这种方式尝试是否有意义?关于如何让我的工厂/服务电话在这里工作的任何意见?