Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在另一个控制器中使用控制器及其所有输入值? .controller(“transactionTypeController”,函数($scope、$rootScope、$location、$state、$stateparms、$rootScope){ $scope.checkReserve=函数(){ //var voucherId=$scope.checked\u vouchersId; //var事务=$scope.checked\u事务; var base=$scope.base; //var newconsup=$scope.consups; var tL=$scope.checked_transactions.length; var输入=[]; 对于(i=0;i_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在另一个控制器中使用控制器及其所有输入值? .controller(“transactionTypeController”,函数($scope、$rootScope、$location、$state、$stateparms、$rootScope){ $scope.checkReserve=函数(){ //var voucherId=$scope.checked\u vouchersId; //var事务=$scope.checked\u事务; var base=$scope.base; //var newconsup=$scope.consups; var tL=$scope.checked_transactions.length; var输入=[]; 对于(i=0;i

Javascript 如何在另一个控制器中使用控制器及其所有输入值? .controller(“transactionTypeController”,函数($scope、$rootScope、$location、$state、$stateparms、$rootScope){ $scope.checkReserve=函数(){ //var voucherId=$scope.checked\u vouchersId; //var事务=$scope.checked\u事务; var base=$scope.base; //var newconsup=$scope.consups; var tL=$scope.checked_transactions.length; var输入=[]; 对于(i=0;i,javascript,angularjs,Javascript,Angularjs,如评论中所述,我们应始终使用服务或工厂在控制器之间共享数据 在某些情况下,我们还可以将一个值从一个控制器广播到另一个控制器 还有一种通过$rootScope共享数据的方法,这也是强烈不推荐的 但也有一些情况下,您希望所有值/函数在其他控制器中可用,即使这两个控制器之间没有直接关系 在这种情况下,您可以将$controller注入新控制器,并使用$.extend(或angular.extend)使其他控制器在此处可用: 埃克萨 .controller("transactionTypeControl

如评论中所述,我们应始终使用服务或工厂在控制器之间共享数据

在某些情况下,我们还可以将一个值从一个控制器广播到另一个控制器

还有一种通过$rootScope共享数据的方法,这也是强烈不推荐的

但也有一些情况下,您希望所有值/函数在其他控制器中可用,即使这两个控制器之间没有直接关系

在这种情况下,您可以将$controller注入新控制器,并使用$.extend(或angular.extend)使其他控制器在此处可用:

埃克萨

.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});
            }
    })

考虑使用工厂或服务来实现控制器之间应该共享的功能。正如@ Fravkz所说的,您可以更好地使用工厂或服务来实现,或者您可以使用$控制器服务将控制器实例化到另一个控制器中,但这可能会导致设计问题。有没有办法将输入定义为全局的?我可以从任何控制器获取它的值,这就是$rootScope的含义。如果要在$rootScope下定义任何属性,则这些属性将在全局范围内可用。但这不是推荐的方法。我相信您应该使用常量、工厂或服务(根据您的需要)来获取这些值,并将它们简单地注入到您想要的任何地方。该服务的所有值都将可用。这是最好的推荐方式。在上面提到的例子中,本地定义在哪里?我已经编辑了答案。您也可以简单地使用“this”而不是“local”,这应该不是问题。我正在从上述控制器中选择一些值,我需要在另一个控制器中选择这些值,并在该控制器中定义其他值,因此通过创建。factory方法不起作用,是否有其他方法可以使用从一个控制器到另一个控制器的值
module.controller('newController', ['$scope', '$controller', function ($scope, $controller) {
    var local = this;
    $.extend(local, $controller('previousController', {$scope: $scope}));
    }]);