Ich möchte einen Controller erstellen, der von anderen Ansichten wiederverwendet werden kann. (Diese Steuerung wird als Vorlage dienen)AngularJS - Controller kann ng-model Objekteigenschaft nicht lesen
Das Problem ist, dass ich nicht eine einfache Validierung machen, weil es nicht die Eigenschaften lesen kann, die in ng-model
gesetzt ist, wenn ich Änderungen auf einem Feld gemacht, dann ist das Eigenschaft wird zu diesem Objekt hinzugefügt.
Ich möchte nicht ng-init="object.fieldName = null"
zu jedem Feld aus meiner Sicht setzen, weil ich glaube, dass es keine gute Praxis ist. Ich habe versucht, $watch
verwenden, aber das Objekt gleich noch {}
Hier ist mein Controller:
angular.module('practiceApp')
.controller("CreateModalController", function($scope, items, defaultService) {
function initialize() {
$scope.object = {}; // <---- this should contain the ng-model object properties
$scope.defaultService = defaultService;
$scope.modalTitle = items.modalTitle;
$scope.$watch('object', function(newValue, oldValue) {
console.log(newValue);
}, true);
}
initialize();
});
Hier ist meine Ansicht:
<form name = "objectForm"
role = "form">
<input type="text"
ng-model="object.firstName"
class="form-control"
placeholder="First Name"
ng-class="{'error-textfield': defaultService.isNotValid(object.firstName)}"
required>
<input type="text"
ng-model="object.lastName"
class="form-control"
placeholder="Last Name"
ng-class="{'error-textfield': defaultService.isNotValid(object.lastName)}"
required>
</form>
Stromausgang =>object: {}
gewünschter Ausgang =>object: {firstname: undefined, lastName: undefined}
Ich sehe nicht, dass Sie die Initialisierungsfunktion in der Ansicht aufrufen. –
Was meinen Sie mit "Aufruf der Initialisierungsfunktion in der Ansicht"? Ich habe den obigen Code aktualisiert, um ihn zu vervollständigen, aber ich rufe nur die Initialisierungsfunktion in meinem Controller auf. – KennethC