路由匹配时如何在AngularJs中调用函数? [英] How to call a function in AngularJs when route matches?

查看:21
本文介绍了路由匹配时如何在AngularJs中调用函数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

显示一个简单的列表,其中每个条目都可以选择.但是在选择时没有加载额外的视图.一切都在 ticket_lost 模板 中.该模板有一些隐藏字段,当点击条目时会显示这些字段.

displays a simple list where each entry is selectable. However on select no extra view is loaded. Every thing is in ticket_lost template. The template has some hidden fields that are revealed when entry is clicked.

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

I can define which entry is selected internally by setting

selectedTicket = 1;

所以当有一条路线时

/ticket/1

我想调用一个将 selectedTicket 设置为 1 的函数.这可能吗?怎么做?我必须在路由中更改什么?

I want to call a function that sets selectedTicket to 1. Is that possible? How to do that? What do I have to change in routing?

推荐答案

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

Take a look at $routeParams service. It allows to set up route with parameters which will be parsed by service:

// 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();
    });

这篇关于路由匹配时如何在AngularJs中调用函数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆