Ich habe eine Zeichenfolge, die ich von einem routeParam
oder einem Direktivenattribut oder was auch immer erhalten habe, und ich möchte basierend darauf eine Variable für den Bereich erstellen. So:
$scope.<the_string> = "something".
Wenn die Zeichenfolge jedoch einen oder mehrere Punkte enthält, möchte ich sie aufteilen und tatsächlich einen Drilldown in den Bereich durchführen. So 'foo.bar'
sollte werden $scope.foo.bar
. Dies bedeutet, dass die einfache Version nicht funktioniert!
// 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!
Wenn Sie eine Variable lesen, die auf einer Zeichenfolge basiert, können Sie dieses Verhalten erhalten $scope.$eval(the_string)
, aber wie geht es beim Zuweisen eines Werts?