РЕДАГУВАТИ
Як правильно зазначено в коментарях, використовуючи це за допомогою ng-change, попередньо повинна бути присутня "фіктивна" ng-модель. Однак слід зазначити, що, мабуть, з 1.3 необхідні варіанти були передбачені рамками. Будь ласка, перевірте https://stackoverflow.com/a/28365515/3497830 нижче!
/ РЕДАКТУВАТИ
На той випадок, якщо ви схожі на мене, спотикаючись про простий випадок, маючи більш складне завдання, це рішення, яке я придумав для динамічного прив’язки довільних виразів до ng-моделі: http://plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p = попередній перегляд
Метод: Я створив директиву dynamicModel, яка приймає стандартний кутовий вираз, обчислює його і прив'язує результат до області дії за допомогою ng-моделі та $ 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-моделі.
Сподіваюсь, це рятує когось головний біль від необхідності придумувати це рішення.
З повагою, Юсту