Я не уверен, что вы пытаетесь сделать, но позвольте мне указать на некоторые вещи в вашем коде, которые потенциально могут указывать на вас в правильном направлении.
Первый, ваши данные в формате JSON (который я предполагаю, вы имеете в виду, как result
с вашего сервера:.
{programId:1,
programName:project1,
programContent:content1,
programStartDate:2012-01-01,
templateId: "1"}
является довольно прилично ТЗА сформированным Двойные кавычки вокруг обоих ключей и значений правильный формат JSON (значения, которые являются цифры не нужны кавычки).
Второй, при условии, что ваши данные в формате JSON, действительно, как вы хотите, и ожидать, что она будет в вашем кал lback функция:
...
}, function (result) {
data = {
'program': result
};
...
});
...
result
является STRING (с 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 string. Если это то, что вы намереваетесь, тогда продолжайте!
Четвертый, в вашей $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
атрибут по обе части массива прототипа. Это означает, что если ваш переданный в data
объект JS, .slice
будет вызывать ошибку «не имеет никакого метода», а .length
будет возвращаться не определен.
JSON.stringify превращает объект в строку. – OverZealous
Как я могу вернуть массив json? – user2473037
Просто перекрестно ссылаясь на ваши два вопроса, вы задали почти такой же вопрос: http://stackoverflow.com/questions/18071510/use-slice-function-to-slice-json-object –