【发布时间】:2014-04-10 14:02:02
【问题描述】:
仍在快速学习 AngularJS,下面是一个简单的测试示例,使用 ng-repeat 显示列表,最终会弹出一个窗口。
Fiddle
HTML:
<div class="container" ng-app="main">
<div id="person-info"></div>
<div id="people" ng-controller="PeopleController" ng-cloak>
<div class="person" ng-repeat="person in people" ng-class-even="'even'">
<a href="" ng-click="showPersonInfo()">( more )</a> <span>{{person.name}}</span>
</div>
</div>
</div>
JavaScript:
angular.module('main',[]);
// Main Model
var model = [];
for (var i=0,n=10; i<n; i++){
model[model.length] = {'name': 'Person '+ i, 'description': 'Person ' + i + ' description'};
}
// Main Controller
function PeopleController ($scope) {
$scope.people = model;
$scope.showPersonInfo = function (){
document.getElementById('person-info').innerHTML = this.person.description;
};
}
Fiddle
上面有两个问题:
在点击控制器中使用 DOM 查找/操作感觉不对
与第一点相关,必须有更好的方法将控制器外部的元素绑定到范围内的模型。理想情况下,我想要一个类似于:
<div id="person-info">{{$scope.person.description}}</div>的答案,点击控制器只需要关注可能设置$scope.person或其他一些事件处理。
自从我上次查看 Angular 以来,文档已经变得更好了,但我欢迎 cmets 来提高可读性或最佳/常见做法。例如,我可能会因为使用“main”作为应用程序名称而感到悲伤:)
【问题讨论】:
-
看看我的回答......
标签: javascript angularjs angularjs-scope angularjs-ng-repeat