我已成功使用angular中的$http
服务来使用其API从另一台服务器中提取JSON对象。然后我能够显示如此值......
<div ng-controller="ApiController as ApiCtrl">
{{ApiCtrl.Api.status}}
{{ApiCtrl.Api.meta.count}}
{{ApiCtrl.Api.data[0].nickname}}
{{ApiCtrl.Api.data[0].account_id}}
</div>
这会正确显示值,但我无法显示密钥。我四处阅读,here和here。他们解释说有一个ng-repeat被设置为迭代一个对象并从中拉出keys
和values
。
<div ng-controller="ApiController as ApiCtrl">
<div>
<div ng-repeat="(key, value) in Api">
{{key}} : {{value}}
</div>
</div>
</div>
function ApiController($http) {
var vm = this;
vm.Api = [];
$http.get('...').success(function (data) {
vm.Api = data;
});
};
{
"status": "ok",
"meta": {
"count": 1
},
"data": [
{
"nickname": "Mitcha47",
"account_id": 1001356515
}
]
}
第二种方法ng-repeat="(key, value) in Api"
不起作用,只在html中的Api *中显示* ngRepeat :(键,值)
我很困惑为什么它不起作用,并且不确定它是不正确使用语法还是不了解ng-repeat如何完全有效。
在ApiCtrl.Api中更改为div ng-repeat =“(键,值)后”生成了这个 - &gt;
status : ok
meta : {"count":1}
data : [{"nickname":"Mitcha47","account_id":1001356515}]'
哪个好,但不完全是放入表格的格式,这是下一步。是否可以使用.fromJson
函数修复此问题?
我是否包含ApiCtrl,因为可以在每个模块中使用多个控制器,从而使一切指向正确的值?
答案 0 :(得分:1)
您需要在ng-repeat中指定控制器。
修改强>
根据docs,当您使用controller as
声明方法时,属性直接绑定到控制器而不是使用$ scope,因此您需要指定控制器,因为{{1} object是该控制器的属性。
我已更改了代码段以在表格中显示数据,但我不确定您要显示的内容。你能举个例子吗?
Api
<div ng-repeat="(key, value) in ApiCtrl.Api">
angular.module("app", [])
.controller("ApiController", ApiController);
function ApiController($http) {
var vm = this;
vm.Api = {
status: "good",
meta: {
count: 42
},
data: [{
nickname: "Timmy",
account_id: 1
}, {
nickname: "Johnny",
account_id: 2
}]
};
};
table {
border-collapse: collapse;
}
th,
td {
border: 1px solid black;
padding: 5px;
}
th {
text-align: left;
}
答案 1 :(得分:1)
可能出现问题:
应该是 -
<div ng-repeat="(key, value) in ApiCtrl.Api">
{{key}} : {{value}}
</div>
而不是 -
<div ng-repeat="(key, value) in Api">
{{key}} : {{value}}
</div>
答案 2 :(得分:0)
如果您使用控制器作为语法,则必须使用
void RBapp::processInsert(string &str)
{
string *key = new string();
string *satData = new string();
int i = 0, j =0;
while(str[i]!=" ")
{
key[j] = str[i];
i++;
j++;
}
j = 0;
while(str[i]!='\0')
{
satData[j] = str[i];
i++;
j++;
}
myRBT.rbInsert(key, satData);
}