我在控制器内部有scope.students数组。 数据在表中使用ng-repeat显示在我的视图表单中。 我现在想做的是单击按钮时,它应该警告特定对象的父索引。 例如,我单击1 Brick Med的按钮,则应该警告0,因为他在A区。然后,当我单击3中的按钮时,它应该警告1,因为他在B区。 我真的是angularjs的新手,任何帮助都是数百万个感谢,谢谢
var stud = angular.module("stud", []);
stud.controller("StudentsController", function ($scope) {
'use strict';
$scope.alertMe = function (key){
alert(0);
};
$scope.sectionA = [
{
no:1,
name:'Brick Med',
},
{
no:2,
name: 'Colin Christopher',
},
];
$scope.sectionB = [
{
no:3,
name: 'Frank Joemar Timbang',
},
{
no:4,
name: 'Curtis Zaymond',
}
];
$scope.students = [
$scope.sectionA,
$scope.sectionB
];
});
Tally Boxes
StudentsAlert
{{value.no}} {{value.name}}Alert me!{{value.no}} {{value.name}}Alert me!我不知道这是否是您的最终代码,但是您已经对students索引进行了硬编码,因此当您调用alertMe时,您已经知道索引是0还是1。
是的,但是当我单击"提醒我"按钮时,它应该显示其父级索引是什么。一世
您已经像students[0]那样对其进行了编码,因此您知道它将变为0,因此只需传递0(分别传递其他索引)即可?
您好,PSL。我如何将0传递给控制器??,我之前曾尝试过,但不知道如何传递。你能指导我吗?
好的,我编辑了代码,并在$ scope.alertMe()中添加了alert,但是当我单击按钮时,它们都警报0,这是我的错误:-(
我不说警报(0)是吗? :D我说ng-click="alertMe(0)"和ng-click="alertMe(1)"并在您的控制器方法中执行alert(key)
@PSL表示您在html中传递了
警告我! button> td>,对于js中的alertMe功能,您只需要alert(key),为什么不您将json更改为一个数组?
@huanfeng您可以帮我怎样将json更改为一个数组吗?
您的ng-repeat有点混乱,但是我想这就是您想要做的:
{{student.no}} {{student.name}}Alert me!请注意,(key, value)用于迭代对象的属性,而students是数组。
对于$parent.$index,请参阅子ng-repeat的父ng-repeat的访问索引
对于tbody ng-repeat,请参阅如何在没有html元素的情况下使用ng-repeat
通过将ng-click更改为alertMe(studentGroup),将$scope.alertMe更改为$parent.$index,可以避免使用$parent.$index
$scope.alertMe = function (studentGroup) {
alert($scope.students.indexOf(studentGroup));
};
但这取决于您的最终用途。
非常感谢@David Williams。您的答案就是我所需要的。
如果我只想在表中显示sectionA,又想再次单击"提醒我"按钮,它仍应提醒其父索引怎么办?
这实际上取决于如何扩展。对于该特定方案,可以将ng-show="$first"添加到tbody,但这假定您只想显示sectionA。更好的方法是将SectionA和SectionB转换为对象,并使用一个名为show的属性和另一个名为students的属性。然后添加ng-show="studentGroup.show"并更新内部的ng-repeat以使用studentGroup.students。
天哪,我认为这很艰难。我将尝试将它们转换为对象。谢谢您的帮助。
我已经在对象中转换了A节和B节。 jsfiddle.net/e4toyd6j
该代码不适用于我的代码。我想念什么吗?
您的小提琴缺少javascript。
是的,看起来不错。如果它不起作用,则可能是控制器中的东西。
这是更新的小提琴。小提琴没有运行。我只想向您展示如何将数组转换为对象。请检查:-) jsfiddle.net/DharkRoses/7kLo51v7
您现在已经将candidates设置为对象,因此您希望像最初使用(key, candidateGroup) in candidates一样对其进行迭代,尽管由于candidateGroup(即presidents或vicePresidents)现在不再可以执行candidateGroup.show了。是数组。
Copyright © 码农家园