Dieser Teil meiner Form ist:Formwert in der Steuerung nicht festgelegt, bis Seite Fokus Aktualisierung
<form name="form.activityForm" class="form-horizontal" ng-submit="save(form.activityForm.$valid)"
enctype="multipart/form-data" novalidate>
<fieldset>
<div class="form-group" ng-if="!activity._id">
<label for="gpxData" ng-class="{ 'disabled': gpxFileName }" class="btn btn-primary btn-file">Upload GPX
<input type="file" nv-file-select name="gpxData" id="gpxData" ng-model="gpxData" uploader="uploader"
onchange="angular.element(this).scope().setFileName()" hidden>
</label>
<span ng-if="gpxFileName" ng-bind="gpxFileName"></span>
</div>
<div class="form-group" show-errors>
<label class="control-label" for="name">Name</label>
<input name="name" type="text" ng-model="activity.name" id="name" class="form-control"
ng-disabled="!gpxFileName" required>
<div role="alert" class="alert alert-danger" ng-if="(activity.name === 'N/A') && (gpxFileName)">
<p>This activity does not have a <strong>name</strong>. Please select one.</p>
</div>
<div ng-messages="form.activityForm.name.$error" role="alert">
<p class="help-block error-text" ng-message="required">Activity name is required.</p>
</div>
</div>
...
</fieldset>
</form>
setFileName()
$scope.setFileName =() => {
let fr = new FileReader(),
gpxFile = document.getElementById("gpxData").files[0],
filename = gpxFile.name;
fr.onload =() => {
let gpxDataXml = parseXmlFromString(fr.result);
setNameTypeDescription(gpxDataXml.documentElement);
};
fr.readAsText(gpxFile);
$scope.gpxFileName = filename;
};
setNameTypeDescription()
let setNameTypeDescription = (gpxDataXmlDocumentElement) => {
let activityType = getSingleTagData(gpxDataXmlDocumentElement, "type");
$scope.activity.name = getSingleTagData(gpxDataXmlDocumentElement, "name");
$scope.activity.description = getSingleTagData(gpxDataXmlDocumentElement, "descr");
$scope.activityTypes.forEach((type) => {
if (type.name.toLowerCase() === activityType.toLowerCase()) {
$scope.activity.type = type;
}
});
};
Wenn ich log aus die Werte $scope.activity.name
) nachdem sie in der Steuerung geändert wurden, bekomme ich die erwartete Ausgabe. Jedoch nicht die Werte (dh ng-model="activity.name"
) in der Vorlage aktualisieren, bis Fokus wieder auf der Seite (dh auf eine Schaltfläche)
EDIT:
hinzuzufügen, ich brauche ng-model
wie ich verwende brauche 2-Wege-Bindung. Obwohl der Wert ursprünglich im Controller festgelegt wurde, kann der Benutzer auch den Wert in der Vorlage ändern, und beim Senden des Formulars wird dieser Wert in Mongo gespeichert.
Auch ng-bind
arbeitet in diesem Szenario nicht.
versuchen, ng-model-options doc finden Sie hier https://docs.angularjs.org/api/ng/directive/ngModelOptions – MMK
Ich bin nicht sicher, welche Attribute mit 'ng-model-options' und ich einstellen die Dokumentation gelesen haben – wmash
zu Versuchen '$ timeout' an die Steuerung und Änderung' $ scope.activity.name = getSingleTagData (gpxDataXmlDocumentElement, "name") einspritzt; 'auf' $ timeout (function() {$ scope.activity.name = getSingleTagData (gpxDataXmlDocumentElement, "name");}); ' –