我不确定为什么当我在html页面上打印json文件时,也可以从调用函数的按钮开始工作,但不能在javascript文件内部。
这是一个问题,因为我需要在网页中显示数据之前对json文件中的数据进行排序,我无法使其正常工作。我尝试使用此解决方案https://stackoverflow.com/a/15463124/2796268, 但控制台说
未定义jsonDat
我的代码:
function ViewItem()
{
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var list = web.get_lists().getByTitle('demoTrainingRoom2');
var query = SP.CamlQuery.createAllItemsQuery();
allItems = list.getItems(query);
context.load(allItems, 'Include(Title, EventDate, tiempo2)');
context.executeQueryAsync(Function.createDelegate(this, this.success), Function.createDelegate(this, this.failed));
}
function success() {
var currentTitle = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
for(var i = 0; i < this.allItems.get_count(); i++){
var item = this.allItems.get_item(i);
console.log(item.get_item('tiempo2') + ' - ' + currentTitle );
if (currentTitle == item.get_item('time2')){
alert('There is an event with the same Start Date on DemoTrainingRoom2' + ' ' + item.get_item('time2') + ' - ' + currentTitle );
return true; // or item
}
}
return false;
}
function failed(sender, args) {
alert("failed. Message:" + args.get_message());
}
function PreSaveAction() {
var time = SPUtility.GetSPFieldByInternalName('EventDate').GetValue();
alert(time + " Current Start Time");
if(SPUtility.GetSPField('demoField').GetValue() == "no")
{
alert('No need for validation');
return true; //allows me to save
}
else
{
alert('Need to validate date');
//this is were I need to called success
}
}
如何在页面加载或页面加载之前处理json数据?
答案 0 :(得分:3)
您可以在从$http
返回数据时处理数据,如下所示:
$scope.init = function () {
$http.get('json/file.json').success(function(data) {
//---- SORT HERE ----
$scope.jsonDat = mySortFunction(data);
});
};
答案 1 :(得分:2)
试试这个:
$scope.init = function() {
console.log("init");
$http.get('json/file.json').success(function(data) {
$scope.jsonDat = data;
console.log($scope.jsonDat);
})
.error(function(data, status, error, config) {
$scope.jsonDat = [{
heading: "Error",
description: "Could not load json data"
}];
console.log($scope.jsonDat);
});
};
成功之前你有数据,但你试试从res.data获取。当您使用成功时,它不是对数据的响应,而只是对数据的响应。
答案 2 :(得分:1)
我以为你想要排序一些JSON文件然后在HTML页面中显示它。所以我的想法是得到那个JSON文件(你试过)
$http.get('json/file.json') .success(function(data) {
$scope.jsonDat = data.res;
console.log('Checking the result',angular.toJson($scope.jsonDat));
})
但是把结果放在
中$scope.jsonDat = data.res;
例如
sortService.sortJsn = data.res;
$ scope.jsonDat 而是创建有角度的 服务 将数据倒在那里然后您可以在控制器中的任何位置访问这些数据用HTML显示它。