角度重定向到否则没有检测到视图,但是当我点击后退按钮时它可以工作

Mat*_*ics 10 javascript angularjs

更新 下面的答案或评论都没有帮助,我希望有人能给我正确的答案.

当我把这个url放在我的浏览器中时 - 它带我的水果视图和完美的工作,

http://localhost:53052/AppTest.aspx#/fruits
Run Code Online (Sandbox Code Playgroud)

但是,当我转到我的home view并单击按钮并尝试导航到'fruits'查看然后它重定向到我http://localhost:53052/AppTest.aspx#/routeNotFound

但是,当我点击浏览器的后退按钮时,它会返回到水果视图,然后如果我再次点击它,则会返回到主视图.

所以这是树视图中发生的事情,

- >点击主页视图按钮(应该导航到fruits view但是会转到routeNotFound查看)

- >当我点击浏览器上的后退按钮时,它会转到fruits view,然后如果我再次点击它然后它会转到Home view

这是我的路线,

(function () {
    'use strict';
    var app = angular.module('fruitApp');
    app.constant('routes', getRoutes());
    app.config(['$routeProvider', 'routes', routeConfigurator]);

    function routeConfigurator($routeProvider, routes) {
        routes.forEach(function (route) {
            $routeProvider.when(route.url, route.config);
        });
        $routeProvider.otherwise({ redirectTo: '/routeNotFound' });
    }

    function getRoutes() {
        return [
          {
              url: '/home',
              config: {
                  templateUrl: 'App/templates/home.html',
              }
          },
          {
              url: '/fruits',
              config: {
                  templateUrl: 'App/templates/fruits.html',
              }
          }
        ];
    }
})();
Run Code Online (Sandbox Code Playgroud)

主视图(我只使用它来加载模块并将其他视图加载到其中)

   <div data-ng-app="fruitApp">
        <div data-ng-view="">
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

家庭观点

<div data-ng-controller="home as vm">
     <div data-ng-click="vm.goToFruits()">click Me!</div>
</div>
Run Code Online (Sandbox Code Playgroud)

家庭控制器

(function () {
    'use strict';

    var controllerId = "home";
    angular.module('fruitApp').controller(controllerId,
        ['$location', 'datacontext', home]);

    function home($location, datacontext) {
        var vm = this;
        vm.goToFruits = goToFruits;

        function goToFruits() {
            $location.path('/fruits');
        }
    };
})();
Run Code Online (Sandbox Code Playgroud)

水果视图

<div data-ng-controller="fruits as vm"> fruits </div>
Run Code Online (Sandbox Code Playgroud)

水果控制器

(function () {
    'use strict';

    var controllerId = "fruits";
    angular.module('fruitApp').controller(controllerId,
        ['$location', 'datacontext', fruits]);

    function fruits($location, datacontext) {
        var vm = this;
    };
})();
Run Code Online (Sandbox Code Playgroud)

我正在关注这个项目,所以如果我不缺少任何概念,那么定义模块就像我一样不应该是一个问题吗?

https://github.com/OfficeDev/Learning-Path-Manager-Code-Sample/blob/master/App/learningPath/learningPaths.js

编辑

我尝试改变路由配置和控制器中的一些代码来使用ui-route它现在它带我到水果视图(就像之前做的那样)但它不再将我重定向到'其他'路由但是它仍然将URL更改为/routeNotFound..

更新

我最终使用href和ng-href来切换视图.

Squ*_*gle 5

你的例子中有很多"绒毛".我已经删除了一些,你应该能够看到这里plunkr演示 - 它有助于看看你是否在没有框架的情况下运行它 - http://run.plnkr.co/plunks/40eDlZfZQnAJRWxeg1ge/#.

对我来说,它看起来很好.我可以点击文本导航到"水果"控制器,然后点击浏览器中的"后退"按钮返回"主页".

关于代码的一些事情:

  1. 您的app.module需要声明,app.module('fruitsApp', ['ngRoute']);以确保加载依赖项.
  2. 我删除了你的示例代码不需要知道的'datacontext'等
  3. 我在路线中使用基本模板而不是templateUrls.
  4. 我将默认路由重定向到'/home'- 这在您的上下文中是否有意义?

我的建议是删除代码片段,直到它开始工作,然后用它来弄清楚究竟是什么导致了问题.