0

新變量我有一個角度服務/價值,試圖拿起一個變量,但它拿起原來的而不是新的。新的變量應該是在$(文件)。就緒的一個(),如下圖所示:

但DBcontent代替
var app = angular.module("app", []); 
var db = "asdf" 
$(document).ready(function(){ 
    // document.getElementById("DB_content").value === '[{"name":"Joe", "age":"19"}, {"name":"Jill", "age":"21"}]' 
    db = document.getElementById("DB_content").value; 
    console.log(db); 
}); 
app.value("DBcontent", db); 

持有字符串「陣列」,它是抱着「ASDF」。我懷疑這是因爲app.value(「DBcontent」,db)正在立即執行,甚至在$(document).ready()之前執行。我曾嘗試把var db放在$(document).ready()之外,但是這打破了它。有人知道我能在這裏做什麼嗎?

https://jsfiddle.net/dop49d54/4/

+0

app.value將在ready事件觸發之前被分配 – charlietfl

回答

2

app.value(...)立即運行,前$(document).ready(...)

如果你希望它在你需要把它移到該事件處理程序內$(document).ready(...)所獲得的價值。

$(document).ready(function(){ 
    var app = angular.module("app", []); 
    // document.getElementById("DB_content").value === '[{"name":"Joe", "age":"19"}, {"name":"Jill", "age":"21"}]' 
    var db = document.getElementById("DB_content").value; 
    console.log(db); 
    app.value("DBcontent", db); 
}); 

移動<script>標籤下到<body>的底部將工作!

<script> 
var db = "asdf"; 
(function go(){ 
    db = document.getElementById("DB_content").value; 
    console.log(db); 
    app.value("DBcontent", db); 
})(); 
<script> 
+0

在$(document).ready()中移動app.value(..)會破壞代碼並導致Error:$ injector:unpr未知提供者。似乎angular.value(..)可以從jQuery中實例化。 –

+0

啊,我錯過了,修復我的答案。另一條線也需要移動。 – Draco18s

+0

*無法在jQuery中實例化
即使在$(document).ready()內添加angular.module(「app」,[])也不起作用。 –

0

從根本上說,你已經通過var前綴它標誌着$document.ready()功能爲本地內部db變量。

該函數內的變量db不會更新您的全局變量db旁邊的角應用程序定義。

另請注意,app.value("DBcontent", db);$document.ready()之前運行。如果您需要使用DOM中的某個角度變量提供角度變量,請爲DOM元素指定一個指令並在範圍中設置值。或者您也可以在這種情況下使用ng-init

+0

好抓!我修復了var db。 ng-init如何適應這種情況?如果你可以舉個例子嗎? :) –

相關問題