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

当路由匹配时,如何在AngularJs中调用函数?,angularjs,angularjs-routing,Angularjs,Angularjs Routing,显示一个简单列表,其中每个条目都是可选择的。但是,在“选择”上未加载额外视图。所有东西都在票证丢失模板中。模板有一些隐藏字段,单击条目时会显示这些字段 我可以通过设置 $routeProvider.when('/ticket', { controller: TicketController, templateUrl: Routing.generate('ticket_list') }); 所以当有这样一条路线的时候 selectedTicket = 1; 我想调用一个将se

显示一个简单列表,其中每个条目都是可选择的。但是,在“选择”上未加载额外视图。所有东西都在
票证丢失模板中
。模板有一些隐藏字段,单击条目时会显示这些字段

我可以通过设置

$routeProvider.when('/ticket', {
    controller: TicketController, 
    templateUrl: Routing.generate('ticket_list')
});
所以当有这样一条路线的时候

selectedTicket = 1;
我想调用一个将selectedTicket设置为1的函数。可能吗?怎么做?我必须更改哪些路线?

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

/ticket/1
在控制器中:

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

你能提供一些关于你的应用程序的更多信息吗?你指的是你的问题中没有解释的元素-也许也可以提供plunkr或fiddle?我如何使我的路线/车票在使用和不使用ticketId参数的情况下工作?它应该与使用相同控制器的2条路线一起工作,一条带有:ticketId参数,一条没有是的,听@Narretz:你需要两条路线。更新answer@DmitryEvseev这是确定URL更改时要调用的正确方法的最佳方法,没有更好的方法吗?您只是在检查$routeParams中是否存在ticketId,如果我有许多URL具有
ticketId
s?@Digitlimit如果您有许多URL具有相同的参数名
tickerId
,但执行不同的逻辑,您最好为它们设置单独的控制器。一个逻辑太多的控制器将难以维护、扩展和测试。
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();
    });