Tengo una cadena que obtuve de un routeParam
atributo de directiva o lo que sea, y quiero crear una variable en el alcance basada en esto. Entonces:
$scope.<the_string> = "something".
Sin embargo, si la cadena contiene uno o más puntos, quiero dividirla y "profundizar" en el alcance. Así 'foo.bar'
debería ser $scope.foo.bar
. ¡Esto significa que la versión simple no 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!
Al leer una variable basada en una cadena, puede obtener este comportamiento al hacerlo $scope.$eval(the_string)
, pero ¿cómo hacerlo al asignar un valor?