我已经使用Yeoman模板化我的Angular应用程序,因此我的应用程序目录结构很好而且整洁,可以让您了解我的项目是如何构建的。我的应用程序中有2条路线,其中一条叫做“主要”路线。和另一个'。
当我在我的主要'查看,我有一个链接,然后将用户转发到' sub'视图。如何将简单值传递给' sub'控制器通过我的主要'的链接查看?
即。我的链接只是一个标准的HTML链接:
<a href="/#/sub">Go to sub</a>
当你点击它时,sub.js控制器可以为子视图的$ scope添加一些数据,依此类推。我想访问&#39; sub&#39;中的值。从主要&#39;传递的控制器希望这是有道理的..
答案 0 :(得分:2)
根据我的理解,你基本上想要在两个控制器之间进行通信 第一直觉可能是创建父作用域并将数据绑定到它,但有一种更好的方法,一种服务。
您将数据绑定到此服务,它可以充当您的控制器之间的信使,如下所示:
angular.module('app', [])
.factory('Data', dataService)
.controller('firstController', firstController)
.controller('secondController', secondController);
function dataService() {
return { message: "I'm data from a service" };
}
function firstController($scope, Data) {
$scope.data = Data;
}
function secondController($scope, Data) {
$scope.data = Data;
}
标记:
<h2>First controller</h2>
<div ng-controller="firstController">
<input type="text" ng-model=data.message />
{{ data.message }}
</div>
<h2>Second controller</h2>
<div ng-controller="secondController">
<input type="text" ng-model=data.message />
{{ data.message }}
</div>
答案 1 :(得分:1)
绑定变量dataToFoward
,它是mainCtrl
<a ng-href="#/sub/{{dataToFoward}}">Go to sub</a>
在路线中,
when("/sub/:sampleData", {templateUrl: "pathToTemplate" }).
中的,
app.controller('subCtrl', function($routeParams,$scope) {
$scope.fromMain = $routeParams.sampleData;
});