Javascript 将数据从一个控制器传递到另一个控制器以重定向到视图
昨天我询问了控制器之间的数据交换表单。但正确的问题是,在重定向某个视图之后,如何在控制器之间交换数据。这是一个想法(伪代码): 谢谢退房 同样是在stackoverflow上的先前帖子 您可以定义将注入两个控制器的服务:Javascript 将数据从一个控制器传递到另一个控制器以重定向到视图,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,昨天我询问了控制器之间的数据交换表单。但正确的问题是,在重定向某个视图之后,如何在控制器之间交换数据。这是一个想法(伪代码): 谢谢退房 同样是在stackoverflow上的先前帖子 您可以定义将注入两个控制器的服务: app.service('exampleService', function() { var val1; var href = "#/search"; var setVal = function(newString) { val1 = newStr
app.service('exampleService', function() {
var val1;
var href = "#/search";
var setVal = function(newString) {
val1 = newString
};
var getVal = function(){
return val1;
};
return {
setVal: setVal,
getVal: getVal
};
});
依赖项将服务注入两个控制器
在第一个控制器中,定义一些设置值的操作:
app.controller('ControllerOne', function($scope, exampleService) {
$scope.addValOne = function(newString){
exampleService.setVal(newString);
};
});
在第二个控制器中,从服务获取val1:
app.controller('ControllerTwo', function($scope, exampleService) {
$scope.val1 = exampleService.getVal();
});
假设我们希望在控制器之间共享产品对象。在这里,我创建了一个名为SharedDataService的AngularJS服务,如下所示:
myApp.service('SharedDataService', function () {
var Product = {
name: '',
price: ''
};
return Product;
});
接下来,让我们继续使用SharedDataService创建两个不同的控制器。在控制器中,我们使用在上一步中创建的服务。可以按如下所示创建控制器:
var myApp = angular.module("myApp", ['CalService']);
myApp.controller("DataController1", ['$scope', 'SharedDataService',
function ($scope, SharedDataService) {
$scope.Product = SharedDataService;
}]);
myApp.controller("DataController2", ['$scope', 'SharedDataService',
function ($scope, SharedDataService) {
$scope.Product = SharedDataService;
}]);
在视图中,我们可以简单地使用如下所示的控制器:
<h2>In Controller 1h2>
<input type="text" ng-model="Product.name" /> <br/>
<input type="text" ng-model="Product.price" />
<h3>Product {{Product.name}} costs {{Product.price}} h3>
div>
<hr/>
<div ng-controller="DataController2">
<h2>In Controller 2h2>
<h3>Product {{Product.name}} costs {{Product.price}} h3>
div>
控制器1h2中的
产品{Product.name}成本{{Product.price}}h3>
div>
在控制器2h2>
产品{Product.name}成本{{Product.price}}h3>
div>
优秀的回答水平。我将使用jsbin进行测试。谢谢。这是控制器中从视图获取数据的方法->$scope.indexData=function(){var newString=$scope.searchBox;dataService.setVal(newString);$window.location.href=“#/search”->这是主要部分,但不是重定向到searh路由。。。
<h2>In Controller 1h2>
<input type="text" ng-model="Product.name" /> <br/>
<input type="text" ng-model="Product.price" />
<h3>Product {{Product.name}} costs {{Product.price}} h3>
div>
<hr/>
<div ng-controller="DataController2">
<h2>In Controller 2h2>
<h3>Product {{Product.name}} costs {{Product.price}} h3>
div>