您好我正在使用AngularJS我正在开发一个简单的应用程序,我在json中有一些数据:
angular.module('app', []).controller('MainController', ['$scope', function($scope) {
$scope.cities = [{
name: "city A",
elements: [{
id: 'c01',
name: 'name1',
price: 15,
qte: 10
}, {
id: 'c02',
name: 'name2',
price: 18,
qte: 11
}, {
id: 'c03',
name: 'name3',
price: 11,
qte: 14
}],
subsities: [{
name: "sub A1",
elements: [{
id: 'sub01',
name: 'nameSub1',
price: 1,
qte: 14
}, {
id: 'sub02',
name: 'nameSub2',
price: 8,
qte: 13
}, {
id: 'sub03',
name: 'nameSub3',
price: 1,
qte: 14
}]
}, {
name: "sub A2",
elements: [{
id: 'ssub01',
name: 'nameSsub1',
price: 1,
qte: 7
}, {
id: 'ssub02',
name: 'nameSsub2',
price: 8,
qte: 1
}, {
id: 'ssub03',
name: 'nameSsub3',
price: 4,
qte: 19
}]
}, {
name: "sub A3",
elements: [{
id: 'sssub01',
name: 'nameSssub1',
price: 1,
qte: 11
}, {
id: 'sssub02',
name: 'nameSssub2',
price: 2,
qte: 15
}, {
id: 'sssub03',
name: 'nameSssub3',
price: 1,
qte: 15
}]
}]
}, {
name: "city B",
elements: [{
id: 'cc01',
name: 'name11',
price: 10,
qte: 11
}, {
id: 'cc02',
name: 'name22',
price: 14,
qte: 19
}, {
id: 'cc03',
name: 'name33',
price: 11,
qte: 18
}]
}, {
name: "city C",
elements: [{
id: 'ccc01',
name: 'name111',
price: 19,
qte: 12
}, {
id: 'ccc02',
name: 'name222',
price: 18,
qte: 17
}, {
id: 'ccc03',
name: 'name333',
price: 10,
qte: 5
}]
}];
$scope.extractSubsities = function(itemSelected) {
if (itemSelected && itemSelected.elements) {
$scope.data = itemSelected.elements;
}
}
});
为了制作干净的代码和良好的实践,我需要将数据放在其他json文件中,并将其称为:
angular.module('app', []).controller('MainController', ['$scope', function($scope) {
$scope.cities = /*call my json here please how can do that*/;
$scope.extractSubsities = function(itemSelected) {
if (itemSelected && itemSelected.elements) {
$scope.data = itemSelected.elements;
}
}
});
请有人帮助我。
更新
在你的答案之后我申请了但是它没有和我合作,请看看我做了什么:
我安装了服务器网站(xampp)并将所有文件放在服务器上
我改变了我的脚本:
angular.module('app', []).controller('MainController', ['$scope', '$http', function($scope, $http) {
$http.get('js/controllers/data.json').then(function(response) {
$scope.cities = response.data;
});
$scope.extractSubsities = function(itemSelected) {
if (itemSelected && itemSelected.elements) {
$scope.data = itemSelected.elements;
}
}
}]);
这是我的数据 data.json
{
"data":[{
"name": "city A",
"elements": [{
"id": "c01",
"name": "name1",
"price": "15",
"qte": "10"
}, {
"id": "c02",
"name": "name2',
"price": "18,
"qte": "11"
}, {
"id": "c03",
"name": "name3",
"price": "11",
"qte": "14"
}],
"subsities": [{
"name": "sub A1",
"elements": [{
"id": "sub01",
"name": "nameSub1",
"price": "1",
"qte": "14"
}, {
"id": "sub02",
"name": "nameSub2",
"price": "8",
"qte": "13"
}, {
"id": "sub03",
"name": "nameSub3",
"price": "1",
"qte": "14"
}]
}, {
"name": "sub A2",
"elements": [{
"id": "ssub01",
"name": "nameSsub1",
"price": "1",
"qte": "7"
}, {
"id": "ssub02",
"name": "nameSsub2",
"price": "8",
"qte": "1"
}, {
"id": "ssub03",
"name": "nameSsub3",
"price": "4",
"qte": "19"
}]
}, {
"name": "sub A3",
"elements": [{
"id": "sssub01",
"name": "nameSssub1",
"price": "1",
"qte": "11"
}, {
"id": "sssub02",
"name": "nameSssub2",
"price": "2",
"qte": "15"
}, {
"id": "sssub03",
"name": "nameSssub3",
"price": "1",
"qte": "15"
}]
}]
}, {
"name": "city B",
"elements": [{
"id": "cc01",
"name": "name11",
"price": "10",
"qte": "11"
}, {
"id": "cc02",
"name": "name22",
"price": "14",
"qte": "19"
}, {
"id": "cc03",
"name": "name33",
"price": "11",
"qte": "18"
}]
}, {
"name": "city C",
"elements": [{
"id": "ccc01",
"name": "name111",
"price": "19",
"qte": "12"
}, {
"id": "ccc02",
"name": "name222",
"price": "18",
"qte": "17"
}, {
"id": "ccc03",
"name": "name333",
"price": "10",
"qte": "5"
}]
}];
}
但它仍然无法加载数据
答案 0 :(得分:1)
您需要使用ajax来获取文件:
$http.get('file.json').then(function(response) {
$scope.cities = response.data;
});
答案 1 :(得分:1)
你需要注入$http
服务来从外部源获取数据,在你的情况下,它只是一个JSON文件。
angular.module('app', []).controller('MainController', ['$scope', '$http', function($scope, $http) {
$http.get('link to json').then(function(response) {
$scope.cities = response.data;
});
$scope.extractSubsities = function(itemSelected) {
if (itemSelected && itemSelected.elements) {
$scope.data = itemSelected.elements;
}
}
}]);
答案 2 :(得分:1)
您需要将$ http服务注入控制器,并向文件目录中的json文件发出get请求。
您的控制器将如下所示:
angular.module('app', []).controller('MainController', ['$scope', '$http', function($scope, $http) {
$scope.cities;
$scope.extractSubsities = function(itemSelected) {
if (itemSelected && itemSelected.elements) {
$scope.data = itemSelected.elements;
}
}
function getCities() {
$http.get('/data/cities.json').then(function(response) {
$scope.cities = response.data;
});
}
}]);
这假设你的json文件名为cities.json,位于data / cities.json的位置
希望这有帮助。
有关最佳实践的更多信息,请参阅John Papa的styleguide @ github: