带有服务的ui-router中的$ modal

时间:2014-08-12 17:21:00

标签: angularjs modal-dialog angular-ui angular-ui-router

我有一个非常简单的$ 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;
    });
},

将我的控制器置于其自己的文件并以这种方式尝试是否有意义?关于如何让我的工厂/服务电话在这里工作的任何意见?

0 个答案:

没有答案