我正面临一个奇怪的角度问题,
我用laravel和mysql编写了一个API,它在json中返回数据。
在我的Ubuntu机器上,它在json响应中返回id' s和外部id STRING
,我的ngModel绑定工作正常。
我最近切换到运行WAMP的Windows机器,这里laravel返回id' s,外国id为INTEGER
,我的ngModel绑定不再有效。
实施例
Ubuntu
上的Laravel json回复如下:
{
"id": "1234",
"name": "enam",
...
}
Windows
上的Laravel json回复如下:
{
"id": 1234,
"name": "enam",
...
}
我有一个输入[text]字段,可以将此响应绑定到ngModel,如下所示:
<input type="text" ng-model="vm.user.id" ...>
在我的Ubuntu机器上它工作正常,在Windows上我得到一个空的输入字段。
以前有人遇到过这个问题吗?我怎么能以干净的方式解决这个问题呢?
我想我可以把它投射到 .toString(); 但这对我来说并不是那么干净。
我的控制器中的绑定
vm.getCustomer = function() {
Customer.getById($stateParams.id)
.then(function(data) {
vm.customer = data.data;
}, function(error) {
vm.error = error.data;
});
};
客户服务只返回$ http电话
Json响应(Ubuntu)
{
"id": "1",
"name": "enam",
"postalcode_id": "1179",
"created_at": "2015-04-09 19:48:47",
"updated_at": "2015-04-11 18:00:02",
"postalcode": {
"id": "1179",
"postalcode": "1090",
"city": "JETTE",
"province": "Brussel (19 gemeenten)"
}
}
在Windows中,它返回postalcode.postalcode,id为INTEGER
,
它适用于@Matthew Brown建议的$ cast
答案 0 :(得分:1)
而不是OS问题,这似乎是OS之间的浏览器问题。
只需在服务器端进行修复,如果您使用的是Laravel 5,只需在模型中添加$ casts属性即可轻松实现:
protected $casts = [
'id' => 'integer'
];
就个人而言,我喜欢在我的API中使用变换器。查看名为Fractal的库。这使得包括关系和类型转换成为一个梦想,并允许您的api在未来的列名更改等方面保持不变。