EDIT Comme noté à juste titre dans les commentaires avec ce réglage ng changement nécessite une « factice » ng-model doit être présent à l'avance. Il convient toutefois de noter qu'apparemment avec 1.3 les options requises ont été fournies par le cadre. S'il vous plaît vérifier https://stackoverflow.com/a/28365515/3497830 ci-dessous! /EDIT
Juste au cas où vous êtes comme moi trébucher sur un cas simple, tout en ayant une tâche plus complexe, c'est la solution que je suis venu avec pour lier dynamiquement des expressions arbitraires à ng-modèle: http://plnkr.co/edit/ccdJTm0zBnqjntEQfAfx?p=preview
Méthode: J'ai créé une directive dynamicModel qui prend une expression angulaire standard, l'évalue et lie le résultat à la portée via ng-model et $ 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');
}
// Unbind all previous event handlers, this is
// necessary to remove previously linked models.
element.unbind();
$compile(element)(scope);
});
}
};
}]);
Utilisation dynamique est tout simplement modèle = « angularExpression » où les résultats de angularExpression dans une chaîne de caractères qui est utilisé comme modèle pour l'expression de ng.
J'espère que cela évite à quelqu'un d'avoir mal à la tête de devoir trouver cette solution.
Cordialement, Justus
hmm fait cela m'a donné littéralement '', est-il quelque chose im manquant? –
Hmm, étrange, juste ajouté un exemple en direct (plunker depuis pour une raison quelconque jsFiddle ne fonctionne pas de mon côté aujourd'hui). –
ah oui, j'avais l'habitude de penser en php et je m'attendais à ce que le balisage actuel change pour le nom, ça a marché. THX! –