Javascript 用for循环构建阵列
我正在一个测试应用程序中动态构建一个数组。基本上,我有一个scope函数,它生成一个人员数组并返回数组,在数组上有一个Javascript 用for循环构建阵列,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我正在一个测试应用程序中动态构建一个数组。基本上,我有一个scope函数,它生成一个人员数组并返回数组,在数组上有一个ng repeat。阵列未显示,但我在控制台中也没有收到任何错误,因此idk发生了什么: 我是否正确调用了getPerson函数?如果有更好的方法,一定要告诉我 $scope.person={ 名字:“, 姓氏:“, 是的, 全名:函数(){ var personobject; personobject=$scope.person; 返回personobject.firstna
ng repeat
。阵列未显示,但我在控制台中也没有收到任何错误,因此idk发生了什么:
我是否正确调用了getPerson
函数?如果有更好的方法,一定要告诉我
$scope.person={
名字:“,
姓氏:“,
是的,
全名:函数(){
var personobject;
personobject=$scope.person;
返回personobject.firstname
+ " "
+personobject.lastname;
}
};
$scope.people=function(){
var pplArray=[];
var firstnames=['abdul'、'mahmud'、'gasser'、'ibtihaj'、'abudi'];
var lastnames=['ahmad'、'samrai'、'badawi'、'jasim'、'ahmad'];
var-actives=[true,true,false,true,false];
对于(var i=0;i
我在这里更新了你的小提琴:
var myapp=angular.module(“myapp”,[]);
myapp.controller('appCont',函数($scope){
var Person=函数(){
this.firstname=“”;
this.lastname=“”;
this.isActive=true;
};
Person.prototype.fullname=函数(){
返回这个名字
+ " "
+这是我的姓;
};
var getPerson=函数(第一个、最后一个、活动){
var newPerson=newPerson();
newPerson.firstname=first;
newPerson.lastname=last;
newPerson.isActive=活动;
返回新人;
};
$scope.addPerson=函数(){
$scope.people.push({
名字:$scope.person.firstname,
lastname:$scope.person.lastname
});
$scope.person.firstname='';
$scope.person.lastname='';
};
$scope.people=(函数(){
var pplArray=[];
var firstnames=['abdul'、'mahmud'、'gasser'、'ibtihaj'、'abudi'];
var lastnames=['ahmad'、'samrai'、'badawi'、'jasim'、'ahmad'];
var-actives=[true,true,false,true,false];
对于(var i=0;i
我看到一些问题:
1) $scope.people是一个函数,不是一个数组(所以我只是执行它并保存结果)
2) 您总是覆盖person(您需要一个person类来为数组元素创建新实例,而不是用新数据覆盖同一实例-这样您将在所有数组元素中获得相同的结果)
3) 在$scope上,您应该放置需要从视图访问的内容。助手函数可以是控制器中的本地函数(如果您不希望它们作为服务,尽管作为服务它们是可重用的)
4) 按ng repeat进行跟踪(如果存在重复的关键点)
$scope。people
是生成数组的函数,而不是数组本身,它从未被调用。您可能不想执行$scope.people=(function(){….})(
,这将立即调用函数并将返回值设置为$scope.people。还有一些其他的东西不起作用,但是如果你调用这个方法,你会得到相应的错误消息。哦,我明白了,我会试试这个
$scope.person = {
firstname: "",
lastname: "",
isActive: true,
fullname: function() {
var personobject;
personobject = $scope.person;
return personobject.firstname
+ " "
+ personobject.lastname;
}
};
$scope.people = function() {
var pplArray = [];
var firstnames = ['abdul','mahmud','gasser','ibtihaj','abudi'];
var lastnames = ['ahmad','samrai','badawi','jasim','ahmad'];
var actives = [true,true,false,true,false];
for (var i = 0; i < firstnames.length; i++) {
pplArray[i] = getPerson(firstnames[i], lastnames[i], actives[i]);
}
return pplArray;
};
$scope.getPerson = function(first, last, active) {
var newPerson = $scope.person;
newPerson.firstname = first;
newPerson.lastname = last;
newPerson.isActive = active;
return newPerson;
};
var myapp = angular.module("myapp", []);
myapp.controller('appCont', function($scope) {
var Person = function(){
this.firstname = "";
this.lastname = "";
this.isActive = true;
};
Person.prototype.fullname = function() {
return this.firstname
+ " "
+ this.lastname;
};
var getPerson = function(first, last, active) {
var newPerson = new Person();
newPerson.firstname = first;
newPerson.lastname = last;
newPerson.isActive = active;
return newPerson;
};
$scope.addPerson = function() {
$scope.people.push({
firstname: $scope.person.firstname,
lastname: $scope.person.lastname
});
$scope.person.firstname = '';
$scope.person.lastname = '';
};
$scope.people = (function() {
var pplArray = [];
var firstnames = ['abdul','mahmud','gasser','ibtihaj','abudi'];
var lastnames = ['ahmad','samrai','badawi','jasim','ahmad'];
var actives = [true,true,false,true,false];
for (var i = 0; i < firstnames.length; i++) {
pplArray[i] = getPerson(firstnames[i], lastnames[i], actives[i]);
}
return pplArray;
})();
/*$scope.people = [
{firstname: 'abdul', lastname: 'ahmad'},
{firstname: 'mahmud', lastname: 'samrai'},
{firstname: 'gasser', lastname: 'badawi'},
{firstname: 'ibtihaj', lastname: 'jasim'},
{firstname: 'abudi', lastname: 'ahmad'},
{firstname: 'ahmad', lastname: 'jasim'},
{firstname: 'abdul', lastname: 'samrai'}
];*/
});