ฉันมีสตริงที่ได้รับจาก a 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)
แต่จะทำอย่างไรเมื่อกำหนดค่า?