[英]How to use $eval to pass string to obj - Angular
我有這個字符串:
"var config={general:{instance:'livedemo'}};"
我想基於該字符串創建一個對象,
事實是,使用普通的JS eval函數,一切正常,但是使用$ eval,我會收到“ ReferenceError:未定義配置”,而angular只允許我在控制器上使用$ eval。
有人知道我該怎么做?
謝謝
Angular的$eval
不是用來評估任何javascript表達式,而是用來評估Angular表達式,即通常您在HTML中編寫的內容,例如{{expression}}
現在,這完全取決於要評估的字符串的來源。 如果您完全控制它,可以進行eval
。 但是,如果不確定它是否安全,則可以嘗試對其進行解析。
如果您在{}
中輸入的字符串是正確的JSON,即: {"general": {"instance": "livedemo"}}
,那么您可能會:
var s = "var config={general:{instance:'livedemo'}};"
var m = s.match(/var (.*)=({.*})/);
var varname = m[1]; // "config"
var data = JSON.parse(m[2]); // {general: ...}
這個問題可能有您的答案, Angular.js:$ eval如何工作,為什么與香草eval不同?
$ eval和$ parse不評估JavaScript; 他們評估AngularJS 表達式 。 鏈接的文檔解釋了表達式和JavaScript之間的區別。
我在鏈接頁面上嘗試了angularjs 1.0.8+的表達式計算器。 它沒有任何例外地工作。 如果要在示波器的關鍵配置(例如scope.config
設置一些數據,則可以放棄關鍵字var
。
"config={general:{instance:'livedemo'}}"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.