Eu tenho uma string que obtive de um routeParam
ou de um atributo de diretiva ou de qualquer outra coisa, e quero criar uma variável no escopo com base nisso. Assim:
$scope.<the_string> = "something".
No entanto, se a string contém um ou mais pontos, quero dividi-la e realmente "detalhar" o escopo. Então 'foo.bar'
deve se tornar $scope.foo.bar
. Isso significa que a versão simples não funcionará!
// This will not work as assigning variables like this will not "drill down"
// It will assign to a variables named the exact string, dots and all.
var the_string = 'life.meaning';
$scope[the_string] = 42;
console.log($scope.life.meaning); // <-- Nope! This is undefined.
console.log($scope['life.meaning']); // <-- It is in here instead!
Ao ler uma variável baseada em uma string, você pode obter esse comportamento fazendo $scope.$eval(the_string)
, mas como fazê-lo ao atribuir um valor?