Cre*_*ler 4 javascript json angularjs
我有一个工厂从数组加载数据,或从这个数组中选择一个元素.但是,如果我将它移动到外部.json文件,我只是得到错误 - 我是新手,除了努力之外,还要努力,记住^^所以,如果我使用简单
$http.get('ports.json').success (function(data){
var works = data;
});
Run Code Online (Sandbox Code Playgroud)
代码,我得到"ReferenceError:works not defined".如果我试试
$http.get('ports.json').then((portRes){
var works = res.data;
});
Run Code Online (Sandbox Code Playgroud)
我得到"Uncaught SyntaxError:Unexpected token {"错误.但是这个代码不是工厂,在一个完全不同的页面上工作,所以不知道现在可能出现什么问题:/这里是.json文件,而@链接,你可以查看plunker.Plunker - http://plnkr.co/edit/tMrJMjzc4pl7fQ1PIEiO?p=info
[
{
"Title": "Sprite",
"subTitle": "",
"Link": "sprite",
"Thumbnail": "img/portfolio02.png",
"Image": "img/ismont.png"
},
{
"Title": "Pepsi",
"subTitle": "Kristályvíz",
"Link": "pepsi",
"Thumbnail": "img/portfolio03.png",
"Image": "img/sanofimont.png"
}
]
Run Code Online (Sandbox Code Playgroud)
编辑:所以我尝试了你所写的所有内容,但似乎没有任何工作...所以我现在有一个很好的工作因素,我想转移到外部.json文件,非常清楚明白.
portApp.factory("workFactory", function($http) {
var works = [
{
Title: "Sprite",
subTitle: "",
Link: "sprite",
Thumbnail: "img/portfolio02.png",
Image: "img/ismont.png"
},
{
Title: "Pepsi",
subTitle: "Kristályvíz",
Link: "pepsi",
Thumbnail: "img/portfolio03.png",
Image: "img/sanofimont.png"
}
];
return {
list: function() {
return works;
},
selected: function(detPath) {
selected = works.filter(function(work) {
return work.Link == detPath;
});
return selected;
}
};
Run Code Online (Sandbox Code Playgroud)
你发布的Plunker有很多问题.
但主要问题是这个代码:
portApp.factory("workFactory", function($http) {
$http.get('ports.json').then((portRes) {
var works = res.data;
});
return {
list: function() {
return works;
},
selected: function(detPath) {
selected = works.filter(function(work) {
return work.Link == detPath;
});
return selected;
}
};
});
Run Code Online (Sandbox Code Playgroud)
问题:
1.该then方法需要一个函数.更改(portRes)到function(portRes).
2. var works = res.data在回调函数中创建一个局部var.你不能在外面访问它.加上更改res到portRes.
3.返回worksvar不会在技术上起作用,因为它是一个不在同一范围内的局部变量.它不会在逻辑上工作,因为它$http.get是一个异步过程,你不知道什么时候会完成.
编辑:
你编辑后,我相信你需要这样的东西(我没有检查这个,所以可能有一些错误,但这是做事的方式):
portApp.factory("workFactory", function($http) {
var state = {
works: null,
list: function() {
return this.works;
},
selected: function(detPath) {
return this.works.filter(function(work) {
return work.Link == detPath;
});
}
};
$http.get('myJson.json').success(function(data) {
state.works = data;
});
return state;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1927 次 |
| 最近记录: |