我有一个Angular服务/值试图获取一个变量,但是它会获取原始变量而不是新变量。新变量应该是$(document).ready()中的变量,如下所示:
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);
但不是DBcontent持有字符串“array”,而是持有“asdf”。我怀疑是因为app.value(“DBcontent”,db)正在立即执行,甚至在$(document).ready()之前。我已经尝试将var db放在$(document).ready()之外,但是它打破了它。有谁知道我能在这做什么?
答案 0 :(得分: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>
答案 1 :(得分:0)
从根本上说,您已将db
函数中的$document.ready()
变量标记为本地,前缀为var
。
函数内的db
变量不会更新角度应用旁边定义的全局db
变量。
另请注意app.value("DBcontent", db);
在$document.ready()
之前运行。如果需要使用DOM中的某些内容提供角度变量,请将DOM元素作为指令并在范围中设置值。或者您也可以在这种情况下使用ng-init
。