Angular $ routeParams强制变量类型

时间:2014-03-20 10:42:19

标签: javascript angularjs casting route-provider

在我的Angular应用中,我有/items/:id

等路线
$routeProvider
    .when('/items/:id', {
      templateUrl: 'views/items.html',
      controller: 'ItemCtrl'
    })

在ItemCtrl中,我:id获得$routeParams.parcId问题是它是一个字符串,而值是一个数字,我的所有ID都是数字。

那么如何强制使用正确的类型并且默认没有字符串?

ps:我不想在所有控制器中执行var id = Number($routeParams.parcId)

2 个答案:

答案 0 :(得分:1)

我是使用 $ routeChangeStart 事件完成的。

在app.js文件中,将以下行添加到.run函数中: -

angular.module('test1App').run(function ($rootScope) {

  $rootScope.$on("$routeChangeStart", function (event, next, current) {

    if (next.params.hasOwnProperty('id')) {
      next.params.id = Number(next.params.id);
    }

  });

});

描述:在每次路由更改时,它会检查是否存在名为“id”的参数。如果是,则将其更改为数字。

希望它有所帮助。

答案 1 :(得分:0)

您需要在路由中使用resolve并更新变量。然后在控制器中使用此已解析的变量

<a href="http://plnkr.co/edit/2nXeY325ouqyFtJTLcdq?p=preview"> Example </a>