将值从视图传递到AngularJS中的控制器

时间:2014-10-30 10:17:23

标签: javascript html angularjs

我已经使用Yeoman模板化我的Angular应用程序,因此我的应用程序目录结构很好而且整洁,可以让您了解我的项目是如何构建的。我的应用程序中有2条路线,其中一条叫做“主要”路线。和另一个'。

当我在我的主要'查看,我有一个链接,然后将用户转发到' sub'视图。如何将简单值传递给' sub'控制器通过我的主要'的链接查看?

即。我的链接只是一个标准的HTML链接:

<a href="/#/sub">Go to sub</a>

当你点击它时,sub.js控制器可以为子视图的$ scope添加一些数据,依此类推。我想访问&#39; sub&#39;中的值。从主要&#39;传递的控制器希望这是有道理的..

2 个答案:

答案 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>   

Demo Explained very good at egghead.io

答案 1 :(得分:1)

绑定变量dataToFoward,它是mainCtrl

中的$ scope变量
<a ng-href="#/sub/{{dataToFoward}}">Go to sub</a>

在路线中,

when("/sub/:sampleData", {templateUrl: "pathToTemplate" }).
中的

app.controller('subCtrl', function($routeParams,$scope) {
    $scope.fromMain = $routeParams.sampleData;
});