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
如评论中所述,我们应始终使用服务或工厂在控制器之间共享数据 在某些情况下,我们还可以将一个值从一个控制器广播到另一个控制器 还有一种通过$rootScope共享数据的方法,这也是强烈不推荐的 但也有一些情况下,您希望所有值/函数在其他控制器中可用,即使这两个控制器之间没有直接关系 在这种情况下,您可以将$controller注入新控制器,并使用$.extend(或angular.extend)使其他控制器在此处可用: 埃克萨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
.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}));
}]);