Saya memiliki string yang saya dapatkan dari routeParam
atau atribut direktif atau apa pun, dan saya ingin membuat variabel pada ruang lingkup berdasarkan ini. Begitu:
$scope.<the_string> = "something".
Namun, jika string berisi satu atau beberapa titik, saya ingin membaginya dan benar-benar "menelusuri" ke dalam cakupan. Jadi 'foo.bar'
seharusnya menjadi $scope.foo.bar
. Artinya, versi sederhana tidak akan berfungsi!
// 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!
Saat membaca variabel berdasarkan string, Anda bisa mendapatkan perilaku ini dengan melakukan $scope.$eval(the_string)
, tetapi bagaimana melakukannya saat menetapkan nilai?