我不确定您到底要做什么,但让我指出您代码中的一些内容,这些内容可能会为您指明正确的方向。
首先,您的 JSON 数据(我假设您的意思是result来自您的服务器:
{programId:1,
programName:project1,
programContent:content1,
programStartDate:2012-01-01,
templateId: "1"}
格式错误。键和值的双引号是正确的 JSON 格式(数字值不需要引号)。
其次,假设您的 JSON 数据确实是您想要的和期望的,在您的回调函数中:
...
}, function (result) {
data = {
'program': result
};
...
});
...
result是一个字符串(因为 JSON 只是一种基于文本的序列化格式并且始终是一个字符串),意思是
data = {
'program': result
};
结果data看起来像这样的 JS 对象:
{ 'program' : '{programId:1, programName:project1, programContent:content1, programStartDate:2012-01-01, templateId: "1"}' }
也许您打算将 JSON 转换为本机 JS 对象,在这种情况下JSON.parse(result),您正在寻找的正是这种情况。
data = {
'program': JSON.parse(result)
};
data现在看起来像这样的 JS 对象(假设您的 JSON 格式正确,否则解析函数将中断):
{
"program" : {
"programId" : 1,
"programName" : "project1",
"programContent" : "content1",
"programStartDate" : "2012-01-01",
"templateId" : "1"
}
}
第三,回到你的回调函数:
...
}, function (result) {
...
data= JSON.stringify(data);
$scope.setPagingData(data,page,pageSize);
});
...
data= JSON.stringify(data);将给定的数据转换为JSON 字符串。如果这是你的意图,那就继续吧!
第四,在你的$scope.setPagingData功能中,
$scope.setPagingData = function(data, page, pageSize){
var pagedData = data.slice((page - 1) * pageSize, page * pageSize);
$scope.myData = pagedData;
$scope.totalServerItems = data.length;
if (!$scope.$$phase) {
$scope.$apply();
}
};
.slice函数和.length属性都是 Array 原型的一部分。这意味着如果你传入的data是一个 JS 对象,.slice将会抛出一个“没有方法切片”的错误并且.length会返回 undefined。