Javascript 在angularjs中加载json
我的代码在javascript代码中读取json格式的文本,我希望从json文件中读取它。这是我的代码,如何更改它以读取文件? 我发现这段代码使用了json文件的解析,但如何才能将thos转换到变量$scope.ItemsJavascript 在angularjs中加载json,javascript,jquery,angularjs,json,Javascript,Jquery,Angularjs,Json,我的代码在javascript代码中读取json格式的文本,我希望从json文件中读取它。这是我的代码,如何更改它以读取文件? 我发现这段代码使用了json文件的解析,但如何才能将thos转换到变量$scope.Items app .controller('HomeController', function ($scope, $rootScope, $location, HomeService) { $scope.Items = [{ "Platform": "Plumbing
app
.controller('HomeController', function ($scope, $rootScope, $location, HomeService) {
$scope.Items = [{
"Platform": "Plumbing",
"Details": [{
"Company": "School",
"Cost": {
"Days": 6,
"Person": 5,
"Cost": 100
}
}]
}, {
"Platform": "Electrical Work",
"Details": [{
"Company": "School",
"Cost": {
"Days": 2,
"Person": 4,
"Cost": 200
}
}]
}, {
"Platform": "Cleaning",
"Details": [{
"Company": "School",
"Cost": {
"Days": 1,
"Person": 2,
"Cost": 30
}
}]
}
}];
$scope.GetItems = function () {
HomeService.GetItems().then(function (response) {
$scope.Items = response.data;
}, function () { console.log("GetItems Failed !") });
};
//$scope.GetItems();
$scope.cart1 = { Days: 0, Person: 0, Cost: 0 };
$scope.cart2 = { Days: 0, Person: 0, Cost: 0 };
$scope.AddCart = function (id) {
angular.forEach($scope.Items, function (value, key) {
if (value.Platform == id) {
angular.forEach(value.Details, function (value1, key1) {
if (value1.Company == "School") {
$scope.cart1.Days += value1.Cost.Days;
$scope.cart1.Person += value1.Cost.Person;
$scope.cart1.Cost += value1.Cost.Cost;
}
});
}
});
};
})
.factory('HomeService', function ($http) {
var serv = {};
serv.GetItems = function (data) {
return $http.post('http://www.Schoolsite.com/Items.json', data);
};
return serv;
});
从文件读取是JavaScript中的一个异步操作——这意味着您必须以某种方式检查文件是否已加载,并且只有在该条件为真时才能处理结果 在JavaScript中很简单,只需使用promise或callback来处理异步加载的数据。如果您需要单向数据绑定,最好的选择是使用指令
ngIf
,仅当数据已经加载时才显示页面的关键部分
读取JSON文件itslef的操作是由内部Angular的服务$http
完成的。应该是这样的:
JS
HTML
加载。。。
{{Items}json}
为什么代码不起作用?你得到了什么错误等?Michael,上面的代码很好用,但我想从文件中读取JSON。现在我可以从json文件中读取值了。谢谢,加载很好。@Vinod没问题,很高兴我能帮上忙。
app
.controller('HomeController', function ($scope, $http) {
$scope.areItemsLoaded = false;
$scope.Items = [];
$http
.get('myItems.json')
.then(function (response) {
$scope.Items = response.data;
$scope.areItemsLoaded = true;
// work with $scope.Items here
});
// [...] - the rest of your code
});
<div ng-controller="HomneController">
<div ng-if="!areItemsLoaded">
Loading...
</div>
<div ng-if="areItemsLoaded">
{{Items | json}}
</div>
</div>