如何从模型数据返回到控制器
我有对象的一个具体实例的阵列...,我们称之为数组People
,其中每个person
有uniqueID
,一个name
和tagline
。如何从模型数据返回到控制器
我使用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)。而且在你的人员控制器中,你将能够访问和操纵你的人到你的心中。
尝试父控制器和ng-click="clickHandler(person)"
上定义$scope.clickHandler
,有了这个,你将使用父范围,不需要instancie一个控制器的每一行
Duh谢谢..... – Chuck 2012-08-16 15:41:17
好吧,这对我的作品。谢谢。 – Chuck 2012-08-16 14:51:13
你能帮我访问父范围吗?在HTML中(我希望将人员范围传递到点击处理程序)或PersonCtrl内(我可以要求PersonCtrl。$ scope.parent获取数据?) – Chuck 2012-08-16 15:12:35
您能描述一下您的场景吗?除非绝对必要,否则您不应该访问父范围! – ganaraj 2012-08-16 15:27:48