javascript - 以编程方式将 URL 加载到 ng-view 中

标签 javascript angularjs ng-view

引用下面给出的代码,我希望能够从 showTeam()viewTeam URL 加载到 ng-view 中功能。我怎样才能做到这一点?

<html>

<head>
    <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular.min.js"></script>
    <script src = "https://ajax.googleapis.com/ajax/libs/angularjs/1.4.9/angular-route.min.js"></script>

    <script>
        var teamApp = angular.module("teamApp", ['ngRoute']);

        teamApp.controller('teamController', function($scope, $http) {

            $http
                    .get('/teams')
                    .success(function(response) {
                        $scope.teams = response;
                    }
                    );


            var showTeam = function(id) {

            }
        });

        teamApp.config(['$routeProvider', function($routeProvider) {
            $routeProvider.

            when('/addTeam', {
                templateUrl: 'addTeam.htm',
                controller: 'AddTeamController'
            }).

            when('/viewTeam', {
                templateUrl: 'viewTeam.htm',
                controller: 'ViewTeamController'
            }).

            otherwise({
                redirectTo: '/addTeam'
            });
        }]);

        teamApp.controller('AddTeamController', function($scope) {

        });

        teamApp.controller('ViewTeamController', function($scope, $routeParams) {

        });

    </script>
</head>

<body>

<div ng-app = "teamApp" ng-controller="teamController">

    <button ng-click="newTeam()">new</button>

    <div ng-repeat="team in teams" >
        Name: {{team.name}}
        <br />
        Description: {{team.description}}
        <br />
        <button ng-click="showTeam(team.id)">show</button>
    </div>

    <div ng-view></div>

    <script type = "text/ng-template" id = "addTeam.htm">
        <h2> Add Team </h2>
        To be implemented later.
    </script>

    <script type = "text/ng-template" id = "viewTeam.htm">
        Name: {{team.name}}
        Description: {{team.description}}
    </script>
</div>
</body>
</html>

最佳答案

您需要更改 $routeprovider 以便 viewTeam 需要 id 参数。然后使用 routeparams 在 vi​​ewTeamController 中获取该 id。以下是具体操作方法。只需遵循下面的脚本中的模式即可:

<script>
            var teamApp = angular.module("teamApp", ['ngRoute']);

            teamApp.controller('teamController', function($scope, $http,$location) {

                $http
                        .get('/teams')
                        .success(function(response) {
                            $scope.teams = response;
                        }
                        );


                var showTeam = function(id) {
               $location.url("#/viewTeam/" + id);//there are other means as well.
                }
            });

            teamApp.config(['$routeProvider', function($routeProvider) {
                $routeProvider.

                when('/addTeam', {
                    templateUrl: 'addTeam.htm',
                    controller: 'AddTeamController'
                }).

                when('/viewTeam/:id', {
                    templateUrl: 'viewTeam.htm',
                    controller: 'ViewTeamController'
                }).

                otherwise({
                    redirectTo: '/addTeam'
                });
            }]);

            teamApp.controller('AddTeamController', function($scope) {

            });

            teamApp.controller('ViewTeamController', function($scope, $routeParams) {
            alert($routeParams.id);//you get the route params here.
            });
    </script>

从 View 导航时:

 <a href="#viewTeam/45">  

就您而言:

<a href="#viewTeam/{{team.id}}"> //to navigate from view.

关于javascript - 以编程方式将 URL 加载到 ng-view 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649569/

相关文章:

JavaScript ID 选择器

javascript - JavaScript 中的命名参数

javascript - 弹出项目后的 Angular-cli.json

javascript - 在 angularjs Controller 中使用 html

javascript - 在 ng-view 加载或指令加载后运行 javascript

javascript - Neo4j - 我有 2 个数据相关的收集。我如何将它们合并在一起?

javascript - promise - catch 不工作

javascript - (Angularjs Metronic)侧边栏子菜单在点击后隐藏并且不保持打开

javascript - 从javascript访问 Angular Controller

javascript - 无法在 ng-view 内渲染 jade