2017-07-18 34 views
0
.controller("transactionTypeController", function($scope, $rootScope, $location, $state, $stateParams, $rootScope){ 

     $scope.checkReserve = function(){ 
       //var voucherId = $scope.checked_vouchersId; 
       //var transaction = $scope.checked_transactions; 
       var base = $scope.base; 
       //var newCoupon = $scope.coupons; 
       var tL = $scope.checked_transactions.length; 
       var input = []; 
       for(i = 0; i< $scope.checked_transactions.length; i++){ 
        input["transactions["+ i +"][txnId]"] = $scope.checked_transactions[i]; 
        input["transactions["+ i +"][txnAmount]"] = JSON.parse($scope.amounts[i].base); 
       } 
       for(i = 0; i< $scope.checked_vouchersId.length; i++){ 
        input["vouchers["+ i +"][id]"] = $scope.checked_vouchersId[i]; 
       } 
       for(i = 0; i< $scope.coupons.length; i++){ 
        input["coupons["+ i +"][couponCode]"] = $scope.coupons[i]; 
       } 
       input['loyaltyId'] = "4ZUZ100001"; 
       input['redeemPoint'] = '0'; 
       console.log(input); 
       CheckTransactionApi(input); 
       $state.go('reservation detail', {'mobile' : mobile, 'loyaltyId' : loyaltyId}); 
      } 
    }) 
+1

考慮使用工廠或服務來實現應該在控制器之間共享的功能。 – FrankerZ

+0

由於@FrankerZ表示它更好地使用工廠或服務來實現OR,否則您可以使用$ controller服務將控制器實例化到另一個控制器中,但它可能會導致設計問題。 –

回答

0

正如評論中提到的,我們應該總是使用服務或工廠在控制器之間共享數據。

在某些情況下,我們也可以從一個控制器向其他控制器廣播一個值。

還有一種方法可以通過$ rootScope共享數據,這也是非常不推薦的。

但也有一些情況下,即使兩個控制器沒有直接關係,也希望所有值/函數都可以在其他控制器中使用。

在這種情況下,你可以注入$控制器到新的控制器,並使用$ .extend(或angular.extend)其他控制器是即時拍攝的位置:

了Exa。

module.controller('newController', ['$scope', '$controller', function ($scope, $controller) { 
    var local = this; 
    $.extend(local, $controller('previousController', {$scope: $scope})); 
    }]); 
+0

有什麼方法可以將輸入定義爲全局的,這樣我就可以從任何控制器中獲取它的值 –

+0

這就是$ rootScope的意思。如果您將在$ rootScope下定義任何屬性,則這些屬性將全局可用。但那不是推薦的方法。 我相信你應該使用常量或工廠或服務(根據你的需要)這樣的值,並簡單地注入那些你想要的。該服務的所有值將可用。這是最好的和推薦的方式。 – undefined

+0

在上面提到的例子中定義的地方 –

相關問題