編集
これをng-changeで使用するコメントに正しく記載されているように、「ダミー」のng-modelが事前に存在している必要があります。ただし、明らかに1.3では、必要なオプションがフレームワークによって提供されていることに注意してください。以下のhttps://stackoverflow.com/a/28365515/3497830をチェックしてください!
/編集
より複雑なタスクを実行しているときに単純なケースに遭遇した場合に備えて、これは、任意の式をng-modelに動的にバインドするために私が思いついたソリューションです。 http //plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p =プレビュー
方法:標準の角度式を受け取り、それを評価し、ng-modelと$ compileを介して結果をスコープにリンクするディレクティブdynamicModelを作成しました。
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-modelの式として使用される文字列になります。
これにより、このソリューションを考え出す必要があるという頭痛の種が軽減されることを願っています。
よろしく、ジャスタス