Iam*_*son 0 angularjs angularjs-scope angularjs-ng-repeat angularjs-filter
我正在学习Angular,我正在尝试建立一些东西来学习.我试图在下面尽可能清楚地解释自己 - 任何帮助将不胜感激.
示例:http : //jsbin.com/micasafetise/2/ http://jsbin.com/micasafetise/2/edit?html,js,console,output
我创造了自己的这些数据
$scope.people =
[
{
"personID": 1,
"first_name": "Sam",
"last_name": "Stimpson",
"attending": false
},
{
"personID": 2,
"first_name": "Alison",
"last_name": "van Schoor",
"attending": true
},
{
"personID": 3,
"first_name": "Lindsay",
"last_name": "van Schoor",
"attending": false
}
];
Run Code Online (Sandbox Code Playgroud)
我在我的视图中创建了一个输出,如下所示:
<div ng-repeat="person in people">
<a href="" ng-click="isAttending()">
{{person.first_name}}{{person.last_name}} - {{person.attending}}
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我被困住了.我希望能够点击一个人并将他们的参加字段从false更新为true.我知道我可以像这样使用ng-click
$scope.isAttending = function() {
alert("is attending");
};
Run Code Online (Sandbox Code Playgroud)
但是没有线索如何更新我点击的人在$ scope.people中将false更改为true.
当我实现这一目标时,我计划再使用过滤器进行另一次ng-repeat来显示那些参加但我能够做到这一点的人.
任何人都可以帮助我或给我一些建议,任何事情都会在此刻受到赞赏.
提前致谢.
我写了一个我想在这里做的例子:http : //jsbin.com/micasafetise/2/ http://jsbin.com/micasafetise/2/edit?html,js,console,output
你可以通过重复的人<a href="" ng-click="isAttending(person)">并让你的处理程序方法获取该对象,这样你就可以更新它的属性(你也可以在视图中进行内联,但是最好将逻辑分离并放在控制器中你原来有).
$scope.isAttending = function(person) {
person.attending = true;
};
Run Code Online (Sandbox Code Playgroud)
只需在两个部分添加一个过滤器,以显示谁都参加,谁不参加.
<div ng-repeat="person in people | filter:{attending:false} track by person.personID">
<a href="" ng-click="toggleAttending(person)">
{{person.first_name}}{{person.last_name}} - {{person.attending}}
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
和
$scope.toggleAttending = function(person) {
person.attending = !person.attending;
};
Run Code Online (Sandbox Code Playgroud)
在您的情况下,您可以通过从控制器中过滤掉并填充到2个人people.invited和列表中,可以更好地优化(在同一个人列表中有2个过滤器)people.attendance.
function updatePeopleAttendance(){
$scope.people.attending = [];
$scope.people.invited = [];
angular.forEach(people, function(person){
$scope.people[person.attending ? 'attending' : 'invited'].push(person);
});
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好,你可以传递方法中的id,索引和状态,并从一个数组中拉出项目,然后推送另一个数组.
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |