我有一个要使用ng-repeat
填充的表。我很难弄清楚如何格式化数组以使其正常工作。以下是我目前所拥有的:
PHP(customers.PHP):
$customer_array = array();
$customer1 = array(
'customer_id' => '1',
'name' => 'John Doe',
'city' => 'New York'
);
$customer_array[] = $customer1;
$customer2 = array(
'customer_id' => '2',
'name' => 'Jane Doe',
'city' => 'Boston'
);
$customer_array[] = $customer2;
echo($customer_array);
AngularJS控制器(CustomersCtrl.js):
$http({
url: 'customers.php',
method: "POST"
})
.success(function (data, status) {
$scope.customers = data;
})
.error(function (data, status) {
$scope.status = status;
});
HTML:
<table>
<tbody ng-controller="CustomersCtrl">
<tr ng-repeat="customer in customers">
<td>{{customer.customer_id}}</td>
<td>{{customer.name}}</td>
<td>{{customer.city}}</td>
</tr>
</tbody>
</table>
这不起作用。我做错了什么?
更新:我想知道这是否是因为我使用下面的代码从上面加载HTML代码:
$routeProvider.when('/customers.php', {
templateUrl: 'partials/customers.html',
controller: 'CustomersCtrl'
});
是因为新加载的html模板在尝试执行ng-repeat
循环之前没有绑定到控制器吗?
在发送响应之前,您需要对数组进行JSON编码。
echo json_encode($customer_array);
这将为您的javascript代码提供一些可供使用的东西。现在,唯一传递回javascript的是单词"Array",它不会做任何事情。
如果任何主体都有类似的问题,请检查JSON响应中是否有BOM标记。
什么是BOM?
你可以在wiki 上找到
如何检查您的回复中是否有BOM?
- 在chrome中打开开发人员工具并进入网络
- 找到你的响应文件(如果你没有htaccess重写,可以像file.php一样),然后点击它
- 共有5个选项卡,其中一个是响应。如果BOM标记在那里,你会看到一个红点
如果你找到红嘟嘟怎么办?
在utf-8widouthBOM中对文件进行编码。在记事本++中,您可以在"编码"选项卡中选择。
PS:我的英语很糟糕,我知道:p