Ho una stringa che ho ottenuto da un routeParam
o un attributo di direttiva o qualsiasi altra cosa, e voglio creare una variabile sull'ambito basata su questo. Così:
$scope.<the_string> = "something".
Tuttavia, se la stringa contiene uno o più punti, voglio dividerla e "approfondire" effettivamente l'ambito. Così 'foo.bar'
dovrebbe diventare $scope.foo.bar
. Ciò significa che la versione semplice non funzionerà!
// 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!
Quando leggi una variabile basata su una stringa puoi ottenere questo comportamento facendo $scope.$eval(the_string)
, ma come farlo quando assegni un valore?