Angularjs没有加载json文件

时间:2015-10-15 17:19:43

标签: javascript json angularjs

我不确定为什么当我在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数据?

3 个答案:

答案 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显示它。