我可以在硬编码数据时使其工作,如下所示:
$scope.ChatHistory=[];
$scope.ChatHistory.push({
IsCustomer: false,
UserText: "Please enter the category you are looking for.",
OptionItems: [
{ OptionId: "", SortOrder: "1", OptionName: "Complaint" },
{ OptionId: "", SortOrder: "2", OptionName: "Registration" },
{ OptionId: "", SortOrder: "3", OptionName: "Enquiry" }
]
});
HTML:
<ul>
<li ng-repeat="objHistory in ChatHistory track by $index"
ng-class="{'user': objHistory.IsCustomer, 'desk': !IsCustomer}">
{{ objHistory.UserText }}
<p ng-repeat="opt in objHistory.OptionItems track by $index">
{{ opt.SortOrder }} {{ opt.OptionName }}
</p>
</li>
</ul>
现在,我从DB获取数据:
$scope.GetData = function (categoryId) {
DataFactory.GetData(categoryId)
.success(function (data,status) {
$scope.ChatHistory.push(data);
console.log(data);
})
.error(function (data, status) {
});
}
// console log
"{\"IsCustomer\":false,
\"UserText\":\"\",
\"OptionItems\":[
{\"OptionId\":1,\"SortOrder\":1,\"OptionName\":\"Complaint\"},
{\"OptionId\":2,\"SortOrder\":2,\"OptionName\":\"Request\"},
{\"OptionId\":3,\"SortOrder\":3,\"OptionName\":\"Enquiry\"}
]
}"
如何推送此数据&#39;进入&#39; ChatHistory&#39;阵列现在。 $ scope.ChatHistory.push(data)不起作用。没有错误,但html中没有显示任何内容。
答案 0 :(得分:2)
您的JSON对象似乎是以字符串形式返回的。在从数据库中提取数据的代码中,您首先返回了一个数组吗?如果是这样,您可以运行该数组并手动将每个字段存储到您自己创建的JSON对象中,从而确保您有效地发送和接收有效的JSON。
如果这不起作用(这可能意味着Angular在传输期间将JSON转换为字符串),那么您可以简单地在变量数据上使用JSON.parse(控制台日志的输出,这是字符串)。但是,您必须摆脱换行符:
JSON.parse("{\"IsCustomer\":false, \"UserText\":\"\", \"OptionItems\":[ {\"OptionId\":1,\"SortOrder\":1,\"OptionName\":\"Complaint\"}, {\"OptionId\":2,\"SortOrder\":2,\"OptionName\":\"Request\"}, {\"OptionId\":3,\"SortOrder\":3,\"OptionName\":\"Enquiry\"}]}")
它应该为您提供JSON对象。
答案 1 :(得分:0)
我不认为你必须将数据对象推送到ChatHistory。试着分配如下:
$scope.ChatHistory = data; // this is the data that is returned from server call.