我正在学习AngularJS,我有一个JSON文件,其中包含我想要加载到单独变量中的数据。 我的JSON文件有两个对象/数组:“views”和“addressbook”。我可以将数据绑定到html中的$ scope.variabale,但这不是我正在寻找的。我想将视图和地址簿加载到“var views”和“var adressbook”中,以便我可以使用jquery访问它们。
我的JSON:
{
"myData": {
"views": [
{
"view": "Nieuwe activiteit",
"link": "index.html",
"active": true
},
{
"view": "Activiteiten",
"link": "activiteiten.html",
"active": false
}
],"adresboek": [
{
"Voornaam": "Ruben",
"e-mail": "ruben@e-mail.com",
"mobiel": "0612345678",
"hasFacebook": true,
"hasTwitter": true
},
{
"Voornaam": "Roos",
"e-mail": "roos@e-mail.com",
"mobiel": "0612345677",
"hasFacebook": true,
"hasTwitter": true
}
]
}
}
我想要的是:
var alldata = $http.get('data/data.json').then(function(res) {
var views = res.data.mydata.views;
var adresbook = res.data.mydata.adresbook;
});
我想像这样绑定数据: $ scope.views = alldata.views; $ scope.contacts = alldata.addressbook;
感谢任何帮助:)
答案 0 :(得分:0)
您可以通过引用窗口对象随时访问JavaScript全局范围。如果您修改角度摘要之外的数据,请务必使用$ apply in angular。在您的示例中:
var alldata = $http.get('data/data.json').then(function(res) {
window.alldata = {
"views": res.data.mydata.views,
"addressbook": res.data.mydata.adresbook
};
});
您现在可以访问jQuery中的数据,例如:
console.log( window.alldata.views );
答案 1 :(得分:0)
为什么要将这些变量放在全局范围/窗口上?通常建议不要这样做。您可以考虑创建Angular服务。服务允许您访问不同模块的变量。
在您的代码的上下文中,这个$ http.get请求在哪里发生?
编辑:回复您的评论:
好的,试试这样的事情?
myApp.controller( 'getData', function($http){
this.onLoad: function(){
$http.get('data/data.json').then(function(res) {
$scope.views = allData.views;
$scope.contacts = allData.addressBook;
}
};
this.onLoad();
};
当您第一次实例化角度控制器时,它将调用loadData函数并设置$ scope变量。
(我没有检查你的$ http代码,我只是复制了你的内容)。