如何从模型数据返回到控制器

问题描述:

我有对象的一个​​具体实例的阵列...,我们称之为数组People,其中每个personuniqueID,一个nametagline如何从模型数据返回到控制器

我使用foreach模板来显示这些人的名单,像这样:

<ul> 
    <li ng-repeat="person in People"> 
     {{person.name}}: {{person.tagline}} 
     ... 

够简单采取从控制器并实现同步到模型中的数据。

现在,我想点击一个人,并做一些复杂的信息。像这样:

<ul ng-controller="myCtrl"> 
    <li ng-repeat="person in People" ng-click="clickHandler($event)"> 
     ... 

现在,我有这样的访问DOM元素:

$scope.clickHandler = function($event) { 
    var domElement = $event.currentTarget; 
     ... 

但是,我怎么从相关person对象(被点击的一个数据),以便我可以查看他们的uniqueID(这不存储在DOM中)?

无论何时使用ng-repeat,都应该记住它会创建一个新的范围。该范围从父范围继承。但是对于ng-repeat中的每个项目,都会创建一个新的作用域。

为了访问此范围,您还必须引入一个控制器,该控制器将与该范围一起工作。所以,你必须做的

<li ng-repeat="person in People" ng-click="clickHandler($event)" ng-controller="PersonController"> 
... 

在JavaScript

function PersonController($scope){ 
    //In here you will be able to access the person from "person in People" 

    $scope.clickHandler = function($event){ 
    console.log($scope.person);  
    } 
} 

这是此范围内将有专人变量。现在,你也可以在这里声明一个clickHandler。

您应该注意,对于People中的每个人,将创建一个新范围以及一个新控制器(PersonController)。而且在你的人员控制器中,你将能够访问和操纵你的人到你的心中。

+0

好吧,这对我的作品。谢谢。 – Chuck 2012-08-16 14:51:13

+0

你能帮我访问父范围吗?在HTML中(我希望将人员范围传递到点击处理程序)或PersonCtrl内(我可以要求PersonCtrl。$ scope.parent获取数据?) – Chuck 2012-08-16 15:12:35

+0

您能描述一下您的场景吗?除非绝对必要,否则您不应该访问父范围! – ganaraj 2012-08-16 15:27:48

尝试父控制器和ng-click="clickHandler(person)"上定义$scope.clickHandler,有了这个,你将使用父范围,不需要instancie一个控制器的每一行

+0

Duh谢谢..... – Chuck 2012-08-16 15:41:17