РЕДАКТИРОВАТЬ
Как правильно отмечено в комментариях, использование этого с ng-change требует наличия «фиктивной» ng-модели заранее. Однако следует отметить, что, очевидно, в версии 1.3 необходимые параметры были предусмотрены фреймворком. Пожалуйста, проверьте https://stackoverflow.com/a/28365515/3497830 ниже!
/РЕДАКТИРОВАТЬ
На всякий случай, если вы, как и я, спотыкаетесь в простом случае, имея более сложную задачу, это решение, которое я придумал для динамической привязки произвольных выражений к ng-модели: http://plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p = предварительный просмотр
Метод: я создал директиву dynamicModel, которая принимает стандартное угловое выражение, оценивает его и связывает результат с областью действия через ng-model и $ compile.
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');
}
element.unbind();
$compile(element)(scope);
});
}
};
}]);
Используется просто dynamic-model = "angularExpression", где angularExpression приводит к строке, которая используется в качестве выражения для ng-модели.
Я надеюсь, что это избавит кого-то от головной боли от необходимости придумывать это решение.
С уважением, Юстус