Javascript Can';t将json导入到Angular中的变量
我在一个简单的项目中与angular合作,我已经达到了开发状态,可以开始将内容拆分为单独的编码文件 因此,我有一个带有对象数组的变量,称为oink,如果在主模块、控制器等所在的同一个js文件中定义,它可以正常工作,但如果我尝试从外部json导入它,它就无法工作 我正在使用http://协议。 代码如下:Javascript Can';t将json导入到Angular中的变量,javascript,json,angularjs,Javascript,Json,Angularjs,我在一个简单的项目中与angular合作,我已经达到了开发状态,可以开始将内容拆分为单独的编码文件 因此,我有一个带有对象数组的变量,称为oink,如果在主模块、控制器等所在的同一个js文件中定义,它可以正常工作,但如果我尝试从外部json导入它,它就无法工作 我正在使用http://协议。 代码如下: var oink; $.getJSON("exemplo.json", function(json) { oink = json; }); 在json文件中,我有 [ { "br
var oink;
$.getJSON("exemplo.json", function(json) {
oink = json;
});
在json文件中,我有
[
{
"brand": "Mooo",
"model": "Moolicious"
},
{
"brand": "Mooo2",
"model": "Moolicious2"
},
{
"brand": "Mooo3",
"model": "Moolicious3"
}
]
添加了应用程序的简化版本:
(function() {
var app = angular.module('farm', []);
app.controller('animalController', function(){
this.oinky = oink;
});
app.controller('TabController', function(){
this.tab = 1;
this.setTab = function(newValue){
this.tab = newValue;
};
this.isSet = function(tabmodel){
return this.tab === tabmodel;
};
this.tier = 1;
this.setTier = function(newValue){
this.tier = newValue;
};
this.tierSet = function(tiermodel){
return this.tier === tiermodel;
};
this.show = -1;
this.defineBox= function(janein){
if(this.show>-1 && this.show==janein) {
this.show=-1;
} else {
this.show=janein;
}
};
this.currentBox = function(janein) {
return this.show === janein;
};
this.slide = 1;
this.defineSlide= function(number){
this.slide = number;
};
this.currentSlide= function(number) {
return this.slide === number;
};
});
var oink;
$.getJSON("exemplo.json", function(json) {
oink = json;
});
})();
谢谢您的帮助。您可能会违反同一原产地政策。如果您想进一步调查,请阅读此处的更多内容:
oink
将在控制器尝试将其分配给this.oinky
时未定义。不会创建引用,因此当ajax更新时,oink
控制器变量对其一无所知
我不知道为什么getJSON
在angular代码之外。把它放进去会有帮助的
尝试:
角度代码在哪里?我们不知道如何或在何处使用
oink
@charlietfl如果我在声明变量(在同一个文件上)后立即分配数组,则所有操作都有效。这就是您试图理解的,还是在angular中有其他方法可能导致此问题?不知何故,必须将oink
分配给angular scope才能使用它,但您根本没有显示任何用法。只是没有足够的代码供任何人评估可能出现的问题be@charlietfl我按照要求补充了原始帖子。相对url如何违反同源策略?这一点都没有意义。他们使用两种不同的协议:file和http。在哪里声明OP使用的是file://
协议?您所遵循的假设与先前删除的答案相同。在回答中的评论中,OP是从http://
提供的,我将更新原始帖子,以便帮助那些试图帮助我的人。很多人确实在做这样的假设。使用它来导入文件,我得到了ReferenceError:$http未定义您在控制器中注入了$http
,如答案所示?是的,对不起,我在谷歌搜索之前发布了这个问题。现在我没有这个错误,但仍然无法导入数据。我在()上有index.html,在()上有json。指定的路径文件是否正确?请检查“开发工具网络”选项卡中的实际请求以获取线索。路径正确,如图所示。问题现已解决。在最后一次编辑时,我重置了json,忘记了转义一些斜杠,这导致了问题。谢谢,你帮了我很大的忙。
app.controller('animalController', function($http){
var self = this;
$http.get("exemplo.json").then(function(response){
self.oinky = response.data
});
});