首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用角ui.router,如何开始在一个标准的html角页,而不是向前移动到一个与ui.router模板在文件夹内?

使用角ui.router,如何开始在一个标准的html角页,而不是向前移动到一个与ui.router模板在文件夹内?
EN

Stack Overflow用户
提问于 2015-06-17 04:33:24
回答 1查看 2.4K关注 0票数 3

我有一个标准的角页面,它与任何ui.router功能(index.html)都没有关联。从该页面中,我单击一个触发角调用的链接,而不是在某些操作之后,流程需要重定向到使用角ui.path模板的文件夹中的一个页面。

我创建了一个代表以下内容的柱塞:http://plnkr.co/edit/7UQTlMRQBMXGaRdHlPfs?p=preview (当前柱塞正在工作,但是第一页上有一个循环试图调用用$urlRouterProvider.otherwise(‘events’)创建的默认状态;)

index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html ng-app="app">
  <head>
   <script data-require="angular.js@1.3.16" data-semver="1.3.16" src="https://code.angularjs.org/1.3.16/angular.js"></script>
   <script data-require="ui-router@*" data-semver="0.2.15" src="//rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
   <script type="text/javascript" src="app.js"></script>
  </head>

  <body ng-controller="LoginController as lgCtrl">
    <h1>This page does not use ui.router</h1>
    <a href="manage/home.html" ng-click="goToEvents()">Login</a>
  </body>

</html>

带有ui-view标记的页面位于manage文件夹中:manage/ page .page

代码语言:javascript
复制
<!DOCTYPE html>
<html ng-app="app">

  <head>
    <script src="https://code.angularjs.org/1.3.16/angular.js" data-semver="1.3.16" data-require="angular.js@1.3.16"></script>
    <script data-require="ui-router@*" data-semver="0.2.15" src="//rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
     <script type="text/javascript" src="../app.js"></script>
  </head>

  <body ng-controller="EventsController as evtCtlr">
    <h1>Hello manage/home.html</h1>
    <div ui-view></div>
  </body>

</html>

要插入的templateUrl页面是: manage/events.html

代码语言:javascript
复制
<div ng-controller="EventsController as evtCtrl">
  <h3>Events Page</h3>
  <div>Some user email</div>
</div>

app.js

代码语言:javascript
复制
'use strict';
(function () {
    var app = angular.module('app', ['ui.router']);
    /**
     * Configuration for ui-router module. Handles navigation based on app states.
     */
    app.config(function ($stateProvider, $urlRouterProvider) {

      $urlRouterProvider.otherwise('events');

        $stateProvider
            .state('events', {
                url: '/events',
                views:{
                  '@manage/home':{
                  templateUrl: 'manage/events.html'  
                  }
                }
        });
    });

    app.controller('LoginController', ['$scope','$window', '$state',
      function($scope, $window, $state){
        $scope.goToEvents = function(){
          console.log('trying to load events');
          //this call doesn't work, 404 - It should?? -->> see reference
          //https://github.com/angular-ui/ui-router/wiki/URL-Routing
          $window.location.href = 'manage/home.html/events';

          //don't work
          //$state.transitionTo('events');

          //also don't work
          //$state.go('events');
        };
    }]);

    app.controller('EventsController', [function(){
        console.log('EventsController');
    }]);

})();

我创建了一个代表以下内容的柱塞:http://plnkr.co/edit/7UQTlMRQBMXGaRdHlPfs?p=preview

我尝试过不同的方法从第一个非ui.router页面移动,但到目前为止都没有起作用。

做这件事最好的方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-21 07:55:38

首先,不要将$state作为依赖项注入到LoginController中,因为与此控制器相关的视图不是UI路由。添加$state依赖项会导致您在示例中看到的作为UI-路由器的循环,然后将此视图视为路由。由于没有任何状态与此路由匹配,它尝试加载默认状态,其模板具有相对URL,然后在错误的Plunkr目录中查找该状态,这将导致404错误。

其次,要通过location.href重定向的URL应该有一个散列,否则它也会给404

LoginController的代码

代码语言:javascript
复制
app.controller('LoginController', ['$scope', '$window',
  function($scope, $window) {
    $scope.goToEvents = function() {
      //Do Something
      $window.location.href = 'manage/home.html#/events';
    };
  }
]);

检查http://plnkr.co/edit/K2iBYu?p=preview上的工作示例

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30882386

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档