У меня есть строка, полученная из атрибута 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)
, но как это сделать при назначении значения?