Mam ciąg, który otrzymałem z routeParam
atrybutu lub dyrektywy lub czegokolwiek, i chcę na tej podstawie utworzyć zmienną o zakresie. Więc:
$scope.<the_string> = "something".
Jeśli jednak ciąg zawiera jedną lub więcej kropek, chcę go podzielić i faktycznie „drążyć” w zakresie. Tak 'foo.bar'
powinno się stać $scope.foo.bar
. Oznacza to, że prosta wersja nie będzie działać!
// 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!
Czytając zmienną opartą na łańcuchu, możesz uzyskać to zachowanie, robiąc $scope.$eval(the_string)
, ale jak to zrobić, przypisując wartość?