2016-09-20 16 views
0

我正在使用角度和引導程序遊覽,並且想要將對象保留在自己的區域中,所以他們不會不必存儲在控制器中。我想在服務中存儲一個對象,但它也有對象中的函數。當那些得到「eval()」'd時,他們在服務範圍內發射,而不是控制器通過的地方。具體而言,「$ scope」在服務中沒有上下文,但是在控制器中沒有上下文。JS - 創建並傳遞一個函數,在另一個範圍內進行評估

繼承人的代碼示例:

var returnedObj = { 
    steps: [ 
     { 
      element: '#newProduct', 
      title: 'Create Products', 
      placement: 'bottom', 
      content: 'Create new products here' 
     } 
    ], 
    backdrop: true, 
    //The function that I want to interact with the $scope through the controller 
    onShow: function (tour) { 
     $scope.tourDisabled = true; 
     $scope.filter.availability = 'all'; 
     $scope.filter.gallery = 'Show All'; 
     $scope.updateFilter(); 
    } 
}; 

我試過JSON.stringify和JSON.parse,但是它不與職能的工作。這完全是無望的嗎?

除了$ rootScope之外,這可能嗎?

+0

功能(旅遊)如果在函數中使用遊?只需傳遞一個你使用的參數並刪除範圍... – gyc

+0

@gyc嗯,我沒有在技術上使用它的功能。它只是在文檔中使用,我沒有刪除它。 $ scope與dom進行交互,並在控制器的其他部分中被廣泛使用......我只是想在控制器而不是服務的上下文中觸發該函數。 – fjaxyu

回答

1

你應該通過在$scope,或任何情況下你需要,作爲參數傳遞給你的函數:

onShow: function (tour, $scope) { 
     $scope.tourDisabled = true; 
     $scope.filter.availability = 'all'; 
     $scope.filter.gallery = 'Show All'; 
     $scope.updateFilter(); 
+0

是的!這工作!非常感謝! – fjaxyu

+1

不客氣。我也應該說,我喜歡這種方法,因爲它使功能不那麼緊密。 –

相關問題