Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t将json导入到Angular中的变量_Javascript_Json_Angularjs - Fatal编程技术网

Javascript Can';t将json导入到Angular中的变量

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

我在一个简单的项目中与angular合作,我已经达到了开发状态,可以开始将内容拆分为单独的编码文件

因此,我有一个带有对象数组的变量,称为oink,如果在主模块、控制器等所在的同一个js文件中定义,它可以正常工作,但如果我尝试从外部json导入它,它就无法工作

我正在使用http://协议。

代码如下:

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
      });

});