ui-router不能使用$ urlRouterProvider.otherwise

时间:2018-01-30 09:36:16

标签: javascript angularjs angular-ui-router

我有AngularJs 1.x的ui-router版本1.0.11

我的问题:

当用户输入的地址如:/ url / abcdef不在我的路线中时,则用户喊出自动重定向到/ products。这没关系,但是我遇到的问题是路由器中的参数链接在同一产品页面中不起作用。例如,我点击产品名称,我将重定向到/ products。没有$ urlRouterProvider.otherwise('/ customers');在路由器是好的链接,但我没有像/ url / rtrtrt

这样的页面的路由器

我的路由器代码:

    var app = angular.module("productsApp", [
  "ui.router"

]);

app.config([
  "$stateProvider",
  "$urlRouterProvider",
  "$locationProvider",
  function($stateProvider, $urlRouterProvider, $locationProvider) {

    $urlRouterProvider.otherwise('/products');

    $stateProvider
      .state("home", {
        url: "/products",
        templateUrl: "/products.html",
        controller: "MainCtrl",

        resolve: {
          getAllP: function($http) {
            return $http.get("/products/get").then(function(res) {
              return res.data;
            });
          }
        }
      })

      .state("det", {
        url: "details/:pId/details",
        templateUrl: "p_details.html",
        controller: "productDetailCTRL",

        resolve: {
          prDet: function($http, $stateParams) {
            return $http
              .get("/products/id/" + $stateParams.pId + "/details")
              .then(function(res) {
                return res.data;
              });
          }
        }
      });

    $locationProvider.html5Mode(true);
    $locationProvider.hashPrefix("!");
  }
]);

更新:我尝试使用错误页面error.html设置另一个状态/错误。 产品页面中存在相同的错误。我点击了产品,这将我重定向到/错误页面!我不明白为什么

1 个答案:

答案 0 :(得分:0)

你的代码位置失败了 你必须模式移动$urlRouterProvider.otherwise(**'home'**);

    var app = angular.module("productsApp", ["ui.router"]);

    app.config(["$stateProvider","$urlRouterProvider","$locationProvider",
        function($stateProvider, $urlRouterProvider, $locationProvider) {


            $stateProvider
            .state("home", {
                url: "/products",
                templateUrl: "/products.html",
                controller: "MainCtrl",

                resolve: {
                    getAllP: function($http) {
                        return $http.get("/products/get").then(function(res) {
                            return res.data;
                        });
                    }
                }
            })

            .state("det", {
                url: "details/:pId/details",
                templateUrl: "p_details.html",
                controller: "productDetailCTRL",

                resolve: {
                    prDet: function($http, $stateParams) {
                        return $http
                        .get("/products/id/" + $stateParams.pId + "/details")
                        .then(function(res) {
                            return res.data;
                        });
                    }
                }
            });

            $urlRouterProvider.otherwise('home');

            $locationProvider.html5Mode(true);
            $locationProvider.hashPrefix("!");
        }
]);