ngModel不绑定整数值

时间:2015-04-13 15:38:31

标签: mysql json angularjs windows ubuntu

我正面临一个奇怪的角度问题,

我用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

1 个答案:

答案 0 :(得分:1)

而不是OS问题,这似乎是OS之间的浏览器问题。

只需在服务器端进行修复,如果您使用的是Laravel 5,只需在模型中添加$ casts属性即可轻松实现:

protected $casts = [
    'id' => 'integer'
];

就个人而言,我喜欢在我的API中使用变换器。查看名为Fractal的库。这使得包括关系和类型转换成为一个梦想,并允许您的api在未来的列名更改等方面保持不变。