BEARBEITEN
Wie in den Kommentaren korrekt angegeben, erfordert die Verwendung dieser Option mit ng-change, dass zuvor ein "Dummy" -ng-Modell vorhanden ist. Es sollte jedoch beachtet werden, dass anscheinend mit 1.3 die erforderlichen Optionen vom Framework bereitgestellt wurden. Bitte überprüfen Sie https://stackoverflow.com/a/28365515/3497830 unten!
/BEARBEITEN
Nur für den Fall, dass Sie wie ich über einen einfachen Fall stolpern, während Sie eine komplexere Aufgabe haben, ist dies die Lösung, die ich gefunden habe, um beliebige Ausdrücke dynamisch an ng-model zu binden: http://plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p = Vorschau
Methode: Ich habe eine Direktive dynamicModel erstellt, die einen Standardwinkelausdruck verwendet, ihn auswertet und das Ergebnis über ng-model und $ compile mit dem Bereich verknüpft.
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.data = {};
$scope.testvalue = 'data.foo';
$scope.eval = $scope.$eval;
});
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope) {
$scope.data = {};
$scope.testvalue = 'data.foo';
$scope.eval = $scope.$eval;
});
app.directive('dynamicModel', ['$compile', function ($compile) {
return {
'link': function(scope, element, attrs) {
scope.$watch(attrs.dynamicModel, function(dynamicModel) {
if (attrs.ngModel == dynamicModel || !dynamicModel) return;
element.attr('ng-model', dynamicModel);
if (dynamicModel == '') {
element.removeAttr('ng-model');
}
// Unbind all previous event handlers, this is
// necessary to remove previously linked models.
element.unbind();
$compile(element)(scope);
});
}
};
}]);
Die Verwendung ist einfach dynamic-model = "angularExpression", wobei angularExpression zu einer Zeichenfolge führt, die als Ausdruck für ng-model verwendet wird.
Ich hoffe, das erspart jemandem die Kopfschmerzen, diese Lösung finden zu müssen.
Grüße, Justus