EDITAR
Como se señaló correctamente en los comentarios, usar esto con ng-change requiere que un modelo ng "ficticio" esté presente de antemano. Sin embargo, cabe señalar que aparentemente con 1.3 el marco ha proporcionado las opciones necesarias. Consulte https://stackoverflow.com/a/28365515/3497830 a continuación.
/EDITAR
En caso de que sea como yo tropezando con un caso simple mientras tengo una tarea más compleja, esta es la solución que se me ocurrió para vincular dinámicamente expresiones arbitrarias a ng-model: http://plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p = vista previa
Método: Creé una directiva dynamicModel que toma una expresión angular estándar, la evalúa y vincula el resultado al alcance a través de ng-model y $ 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);
});
}
};
}]);
El uso es simplemente modelo dinámico = "expresión angular" donde expresión angular da como resultado una cadena que se utiliza como expresión para ng-modelo.
Espero que esto le ahorre a alguien el dolor de cabeza de tener que encontrar esta solución.
Saludos, Justus