2015-05-04 64 views
1

開放模式我已經把裏面的服務引導模式,我想從那裏打開它。 但我在螢火蟲中出錯。該代碼仍然工作正常,但有錯誤的螢火獲取未定義的方法錯誤,如果從服務

我有這樣

'use strict'; 

angular.module('test') 
    .factory('commonService', [ 
     '$http', 
     '$log', 
     '$modal', 
     '$q', 
     function ($http, $log, $modal, $q) { 
      var api_url = "/api/"; 
      var 
       commonService = { 

        self: this, 

        open: function (modelName, templateUrl) { 

         var modalInstance = $modal.open({ 
          templateUrl: templateUrl, 
          controller: 'ModalInstanceCtrl', 
          resolve: { 
           modelName: function() { 
            return modelName; 
           } 
          } 
         }); 

         modalInstance.result.then(function (result) { 
          console.log(result); 
         }, function() { 
          $log.info('Modal dismissed at: ' + new Date()); 
         }); 
        }// 

       }; 

      return commonService; 
     }]) 
; 

服務這是我的控制器

$scope.openModal = function (modelName) { 
    commonService.open(modelName, 'test.html').then(function (result) { 
     console.log('res') 

    }, function (error) { 
     console.log(error); 
    }) 

}; 

我喜歡這個模板中打開

ng-click="openModal('User')" 

問題是我的螢火

得到這個錯誤
TypeError: commonService.open(...) is undefined 


commonService.open(modelName).then(function (result) { 

但我仍然模式打開罰款與內容

回答

1

常見service.open方法應返回modalInstance.result。這裏modalInstance.result是一個承諾,你可以在你的控制器中解決它。

+0

哇,這完美地工作,但我並沒有完全理解這是爲什麼。爲什麼錯誤會這樣說。什麼happenning在我的情況 – user3214546

+0

ModalInstance返回基於用戶交互的值,但是當用戶交互,所以它返回它可以將用戶後可以解決一個承諾對象與您互動modalInstance modalInstance不知道。閱讀有關$ q docs.https://docs.angularjs.org/api/ng/service/$q。在你的情況下,你不會在commonservice.open中返回任何東西,所以當你調用方法common service.open()。then()時,它就像undefined.then() – Konammagari

相關問題