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如何适应这种情况?如果你可以举个例子吗? :) –

相关问题