Ich habe eine Funktion, die ich verwende, um einige Felder im Frontend zu validieren, dies wird mit der ng-click-Direktive aufgerufen. Innerhalb der $ scope.validateAgainstStudent() rufe ich eine andere Funktion getStudentObj (Wert), die eines der 3 Schülerobjekte zurückgeben sollte.Angularjs Kann Eigenschaft von undefined nicht lesen Funktion zurückgeben Objekt
Was ich bisher versucht habe, funktioniert einfach nicht. Der Fehler, den ich bekommen ist Typeerror: kann Eigenschaft ‚vorName‘ undefinierter
$scope.student1 = {};
$scope.student2 = {};
$scope.student3 = {};
//This is being called from the frontend ng-click directive
$scope.validateAgainstStudent = function(value) {
console.log(getStudentObj(value).firstName);
if(getStudentObj(value).firstName==null || getStudentObj(value).lastName==null || getStudentObj(value).address==null){
alert('Please fill out all required fields');
} else{
//do something
}
}
};
//This should return the student object
function getStudentObj(value) {
if(value==1){
return $scope.student1;
}
if(value==2){
return $scope.student2;
}
if(value==3){
return $scope.student3;
}
};
ich aber etwas tun lesen konnte, ohne die Hilfe der Funktion getStudentObj (Wert) aber ich werde Endup mit vielen von doppeltem Code, da die Eigenschaften des Student-Objekts gleich sind. d.h Vorname, Nachname ... etc
$scope.student1 = {};
$scope.student2 = {};
$scope.student3 = {};
//This is being called from the frontend ng-click directive
$scope.validateAgainstStudent = function(value) {
if(value==1){
if($scope.student1.firstName==null || $scope.student1.lastName==null || $scope.student1.title==null){
alert('Please fill out all required fields');
} else{
//do something
}
}
if(value==2){
if($scope.student2.firstName==null || $scope.student2.lastName==null || $scope.student2.title==null){
alert('Please fill out all required fields');
} else{
//do something
}
}
if(value==2){
if($scope.student3.firstName==null || $scope.student3.lastName==null || $scope.student3.title==null){
alert('Please fill out all required fields');
} else{
//do something
}
}
};
Von Ihrem ersten Bit Code: $ scope.student1 = {}; Dann rufen Sie den Wert getStudentObj (value) auf, der dann student1/2/3 zurückgibt, also wo ist der firstName für dieses Objekt? Das ist wahrscheinlich der Grund, warum es sich beschweren wird ... – rrd
@rrd Die Eigenschaften werden vom Frontend übergeben ng-model = "student1.firstName". Das ist nicht das Problem, wie ich in meinem zweiten Code-Schnipsel erklärt habe - der andere Ansatz funktioniert gut. – user2342259