J'ai une chaîne que j'ai obtenue d'un routeParam
ou d'un attribut de directive ou autre chose, et je veux créer une variable sur la portée basée sur cela. Donc :
$scope. = "quelque chose".
Cependant, si la chaîne contient un ou plusieurs points, je veux la diviser et en fait "descendre" dans la portée. Donc 'foo.bar'
devrait devenir $scope.foo.bar
. Cela signifie que la version simple ne fonctionnera pas !
// Cela ne fonctionnera pas car l'assignation de variables de cette manière ne "descendra" pas
// Elle attribuera à des variables nommées exactement la chaîne complète, points et tout.
var the_string = 'vie.sens';
$scope[the_string] = 42;
console.log($scope.vie.sens); // <-- Non ! Ceci est indéfini.
console.log($scope['vie.sens']); // <-- C'est par ici à la place !
Lors de la lecture d'une variable basée sur une chaîne, vous pouvez obtenir ce comportement en faisant $scope.$eval(the_string)
, mais comment le faire lors de l'attribution d'une valeur ?