У меня есть строка, полученная из routeParam
атрибута директивы или чего-то еще, и я хочу создать переменную в области видимости на основе этого. Так:
$scope.<the_string> = "something".
Однако, если строка содержит одну или несколько точек, я хочу разбить ее и фактически «углубиться» в область видимости. Так 'foo.bar'
должно стать $scope.foo.bar
. Это означает, что простая версия работать не будет!
// 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!
При чтении переменной, основанной на строке, вы можете добиться такого поведения, выполняя действия $scope.$eval(the_string)
, но как это сделать при присвоении значения?