一尘不染

路由匹配时如何在AngularJs中调用函数?

angularjs

$routeProvider.when('/ticket', {
    controller: TicketController, 
    templateUrl: Routing.generate('ticket_list')
});

显示一个简单列表,其中每个条目都是可选的。但是,选择时不会加载额外的视图。每件事都在里面ticket_lost template。该模板具有一些隐藏的字段,这些字段在单击条目时就会显示出来。

我可以通过设置来定义内部选择的条目

selectedTicket = 1;

所以当有一条路线像

/ticket/1

我想调用一个将selectedTicket设置为1的函数。怎么做?路由中我必须更改什么?


阅读 199

收藏
2020-07-04

共1个答案

一尘不染

看一下$
routeParams
服务。它允许使用将由服务解析的参数设置路由:

// Given:
// URL: http://server.com/index.html#/ticket/1
// Route: /ticket/:ticketId
//
// Then
$routeParams ==> {ticketId:1}

在您的控制器中:

angular.module('myApp')
    .config(['$routeProvider', function($routeProvider) {
        $routeProvider.when('/ticket', {controller: 'TicketController'});
        $routeProvider.when('/ticket/:ticketId', {controller: 'TicketController'});
        $routeProvider.otherwise({redirectTo: '/ticket'});
    }])
    .controller('TicketController', function ($scope, $routeParams) {
        var init = function () {
            if ($routeParams.ticketId) {
                $scope.ticketSelected($routeParams.ticketId);
            }
        };

        // fire on controller loaded
        init();
    });
2020-07-04