相关疑难解决方法(0)

如何使用ui-router中的ui-sref将参数传递给控制器

我需要传递并接收两个参数到我想转移到使用ui-srefui-router的状态.

比如使用以下链接将状态转换为homewith foobar参数:

<a ui-sref="home({foo: 'fooVal', bar: 'barVal'})">Go to home state with foo and bar parameters </a>
Run Code Online (Sandbox Code Playgroud)

控制器中的接收foobar值:

app.controller('SomeController', function($scope, $stateParam) {
  //..
  var foo = $stateParam.foo; //getting fooVal
  var bar = $stateParam.bar; //getting barVal
  //..
});     
Run Code Online (Sandbox Code Playgroud)

我在控制器中得到undefined$stateParam.

有人可以帮我理解如何完成它吗?

编辑:

.state('home', {
  url: '/',
  views: {
    '': {
      templateUrl: 'home.html',
      controller: 'MainRootCtrl'

    },

    'A@home': {
      templateUrl: 'a.html',
      controller: 'MainCtrl'
    },

    'B@home': {
      templateUrl: 'b.html',
      controller: …
Run Code Online (Sandbox Code Playgroud)

html javascript angularjs angular-ui angular-ui-router

364
推荐指数
3
解决办法
37万
查看次数

从AngularJS urls中删除片段标识符(#符号)

是否可以从angular.js网址中删除#符号?

当我更改视图并使用params更新URL时,我仍然希望能够使用浏览器的后退按钮等,但我不想要#符号.

教程routeProvider声明如下:

angular.module('phonecat', []).
  config(['$routeProvider', function($routeProvider) {
  $routeProvider.
  when('/phones', {templateUrl: 'partials/phone-list.html',   controller: PhoneListCtrl}).
  when('/phones/:phoneId', {templateUrl: 'partials/phone-detail.html', controller: PhoneDetailCtrl}).
  otherwise({redirectTo: '/phones'});
}]);
Run Code Online (Sandbox Code Playgroud)

如果没有#,我可以编辑它以具有相同的功能吗?

url angularjs ngroute

254
推荐指数
7
解决办法
19万
查看次数

没有散​​列'#'的AngularJS路由

我正在学习AngularJS,有一件事让我很烦.

我用来$routeProvider为我的应用程序声明路由规则:

$routeProvider.when('/test', {
  controller: TestCtrl,
  templateUrl: 'views/test.html'
})
.otherwise({ redirectTo: '/test' });
Run Code Online (Sandbox Code Playgroud)

但是当我在浏览器中导航到我的应用程序时,我看到了app/#/test而不是app/test.

所以我的问题是为什么AngularJS将此哈希添加#到网址?有没有可能避免它?

javascript angularjs

222
推荐指数
5
解决办法
18万
查看次数

$ location /在html5和hashbang模式/链接重写之间切换

我的印象是Angular会重写在tempaltes中的锚标记的href属性中出现的URL,这样无论是在html5模式还是hashbang模式下它们都能正常工作.位置服务文档似乎说HTML链接重写处理了hashbang情况.因此,我希望在不在HTML5模式下,插入哈希值,并且在HTML5模式下,它们不会.

但是,似乎没有重写.以下示例不允许我只更改模式.应用程序中的所有链接都需要手动重写(或者在运行时从变量派生.我是否需要根据模式手动重写所有URL?

我没有在Angular 1.0.6,1.1.4或1.1.3中看到任何客户端URL重写.似乎所有href值都需要以#/为hashbang模式和/为html5模式.

是否有必要进行重写?我误读了文档吗?做些别傻话?

这是一个小例子:

<head>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.1.3/angular.js"></script>
</head>

<body>
    <div ng-view></div>
    <script>
        angular.module('sample', [])
            .config(
        ['$routeProvider', '$locationProvider',
            function ($routeProvider, $locationProvider) {

                //commenting out this line (switching to hashbang mode) breaks the app
                //-- unless # is added to the templates
                $locationProvider.html5Mode(true);

                $routeProvider.when('/', {
                    template: 'this is home. go to <a href="/about"/>about</a>'
                });
                $routeProvider.when('/about', {
                    template: 'this is about. go to <a href="/"/>home</a'
                });
            }
        ])
            .run();
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

附录:在重新阅读我的问题时,我发现我使用了"重写"一词,但没有明确说明我何时以及何时进行重写.问题是如何让Angular在呈现路径时重写URL,以及如何在两种模式下统一解释JS代码中的路径.它不是关于如何使Web服务器执行HTML5兼容的请求重写.

angularjs angular-routing

179
推荐指数
2
解决办法
17万
查看次数

如何删除angular-ui-router URL中的"#"符号

我正在使用angular-ui-router库,我遇到了URL问题.

我有以下代码:

app.js:

app.config(function ($stateProvider, $urlRouterProvider) {
$stateProvider
    .state('state', {
        url: '/state',
        templateUrl: 'templates/state.html',
        onEnter: function () {
            /*... code ...*/
        }
    })});
Run Code Online (Sandbox Code Playgroud)

index.html的:

<a href="#/state">STATE</a>
Run Code Online (Sandbox Code Playgroud)

这有效,但是当我从<a>标签中删除"#"时,这不起作用.

如何从网址中删除"#"符号?

javascript angularjs angular-ui-router

75
推荐指数
2
解决办法
5万
查看次数

AngularJS URL中的所有斜杠都更改为%2F

我在AngularJS路由方面遇到了很大的问题.

直到最近,一切都很好,有以下路线:

$routeProvider.when('/album/:albumId', {
    controller: 'albumPageController',
    templateUrl: 'views/album.html'
});
Run Code Online (Sandbox Code Playgroud)

并使用href:

<a href="/#/album/{{album.id}}">Link</a>
Run Code Online (Sandbox Code Playgroud)

但是,现在所有的斜杠都被编码成了%2F.

因此,当我单击链接或键入localhost:8000/#/album/1浏览器时,URL将更改为:

HTTP://本地主机:8000 /#%2Falbum%2F1

我已经尝试了几件事来纠正这个问题:

使用ng-href代替href,不使用第一个/(即href="#/album/{{album.id}}")在Homestead localhost(Laravel的linux vagrant机器)中运行应用程序而不是Windows 10上的localhost

任何帮助将非常感激!

href laravel angularjs angularjs-1.6

51
推荐指数
4
解决办法
3万
查看次数

在angularjs应用程序中散列(#!)后的感叹号

我刚注意到在我的所有路线中都有哈希(#!)之后我有感叹号,我不知道我是如何以及为什么我得到它们因为今天我没有它们,是否有任何解决方案可以摆脱它们如果有人能解释我是什么,以及我是如何得到的,我将不胜感激.因此,到目前为止我找到的解决方案只是在我的应用程序中的每个href上手动设置感叹号,但是这让我烦恼,我不知道该怎么做.我使用yeoman生成器生成了我的应用程序,我的app.js看起来像这样

angular
  .module('appNameApp', [
    'ngAnimate',
    'ngCookies',
    'ngResource',
    'ngRoute',
    'ngSanitize',
    'ngTouch'
  ])
  .config(function ($routeProvider) {
    $routeProvider
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main'
      })
      .when('/about', {
        templateUrl: 'views/about.html',
        controller: 'AboutCtrl',
        controllerAs: 'about'
      })
      .when('/jaspo', {
        templateUrl: 'views/about.html',
        controller: 'jaspoCtrl',
        controllerAs: 'vm'
      })
      .otherwise({
        redirectTo: '/'
      });
  });
Run Code Online (Sandbox Code Playgroud)

angularjs

37
推荐指数
2
解决办法
3万
查看次数

AngularJS将我的ng-href url"斜杠"转换为"%2f"

我有一个angularJS应用程序,是一个画廊.对于每一个图像,相关联的与它是一个ng-href#/{{files.id}}.

<a ng-href="#/{{files.id}}"...

但是,当我单击它时,最终显示的URL是

http://localhost:3000/gallery#%2F0

它破坏了我的角度路由

when('/gallery/:imageID', { templateUrl: 'load_image.html' }).

有人可以向我解释如何正确编码URL吗?或者只使用不编码正斜杠的东西?

javascript url-routing angularjs

12
推荐指数
3
解决办法
8519
查看次数

AngularJS 1.6路由无法正常工作

我正在尝试创建我的第一个角度应用程序.但它根本不起作用.我不知道是什么问题.我检查了控制台,但没有错误.

<head>
 <meta charset="utf-8">
 <script src="https://code.angularjs.org/1.6.0/angular.min.js"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.6.0/angular-route.js"></script>
</head>
<body ng-app="myApp">
  <h1>Test angular</h1>
  <a href="#/">Main</a>
  <a href="#sec">Second</a>
  <a href="#th">Third</a>
  <div ng-view></div>
</body>

<script>
var app = angular.module("myApp", ["ngRoute"]);
app.config(function($routeProvider) {
  $routeProvider
  .when("/", {
      templateUrl : "main.html"
  })
  .when("/sec", {
      templateUrl : "sec.html"
  })
  .when("/th", {
      templateUrl : "th.html"
  });
});
</script>
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

javascript routing angularjs angularjs-1.6

10
推荐指数
2
解决办法
1万
查看次数

角度力是URL中不需要的感叹号

当我点击这个:<a href="#/home">home</a>网址是localhost/Sites/App/#!/#%2Fhome

当我点击这个:<a href="#!/home">home</a>网址是localhost/Sites/App/#!/home

但这仅适用于我的计算机,对于我的同事则相反,如果!网址中有链接,则链接不起作用.

我了解SEO最佳实践,但我们没有公共网站,我们需要在网址中使用没有感叹号的网站.

我理解/url是编码的,因为有角度认为这不是路径分隔符,但为什么在我唯一的计算机?我们有相同的代码.

我们使用IIS或IIS express,Chrome或IE,没有任何区别.当它适用于我时,它不适用于所有其他人.

在浏览器网络调用中,我们可以看到链接上的点击和坏网址生成之间没有服务器调用.

这是模块配置:

angular.module('paper.app', [ 'ngMaterial'
                        , 'ngMessages'
                        , 'ngRoute'
                        , ...])
   .config(function ($routeProvider, $mdThemingProvider, $mdIconProvider, $locationProvider, $mdDateLocaleProvider, contentUrl, contentSvg) {

       $routeProvider
           .when("/", {
               templateUrl: contentUrl + 'view-home/html/home.html',
               controller: 'HomeController',
               controllerAs: 'homeCtrl'
           })
           .otherwise({
               redirectTo: '/'
           });

       $locationProvider.html5Mode(false);

       ...
   });
Run Code Online (Sandbox Code Playgroud)

这是bower.json:

{
    "name": "...",
    "version": "1.0.0",
    "authors": [
        "..."
    ],
    "ignore": [
        "node_modules",
        "bower_components"
    ],
    "description": "",
    "main": "",
    "homepage": "",
    "dependencies": …
Run Code Online (Sandbox Code Playgroud)

javascript iis url angularjs

9
推荐指数
2
解决办法
7592
查看次数

AngularJS:路由提供程序将"/"更改为%2F

我正在构建一个AngularJS应用程序,在构建第二个视图时我遇到了URL问题:

我的appContact.js看起来像这样:

(function () {

    "use strict";

    var app = angular.module("appContacts", ["simpleControls", "ngRoute"])
        .config(function ($routeProvider, $locationProvider) {

            $routeProvider.when("/", {
                controller: "contactsController",
                controllerAs: "vm",
                templateUrl: "/views/contactsView.html"
            });

            $routeProvider.when("/details/:firstName", {
                controller: "contactsDetailsController",
                controllerAs: "vm",
                templateUrl: "/views/detailsView.html"
            });

            $routeProvider.otherwise({ redirectTo: "/"});

            $locationProvider.html5Mode({
                enabled: true,
                requireBase: false
            });

        });
})();
Run Code Online (Sandbox Code Playgroud)

在我的HTML中,我有这个链接:

<a asp-controller="Contact" asp-action="Details" ng-href="#/details/{{contact.firstName}}" >{{ contact.firstName}}</a>
Run Code Online (Sandbox Code Playgroud)

当我在浏览器中悬停时,我有正确的建议链接,如:

 **http://localhost:8000/#/details/Matthew**
Run Code Online (Sandbox Code Playgroud)

但是,当我单击链接导航到新页面时,URL将更改为

 **http://localhost:8000/#%2Fdetails%2FMatthew** 
Run Code Online (Sandbox Code Playgroud)

通过%2更改"/"会使应用程序失败并显示空白页面.

你知道为什么会这样,以及如何纠正这个问题?

我已经阅读了类似的帖子,但是它们似乎都没有用,因为我在访问编码器的URL到达浏览器之前没有访问它并且错误就在那里.

谢谢

拉斐尔

javascript asp.net routing angularjs

7
推荐指数
2
解决办法
9068
查看次数

Angular JS:URL 参数出现在 `#!/` 之前并且没有出现在 $location.search() 中

我正在将其他人制作的一个现有的小型 Angular JS 应用程序集成到一个不是用 Angular 构建的现有网站中。

所有 Angular JS 应用程序文件都保存在一个完全独立的目录中,然后用户可以单击链接将它们带到该子目录的索引。例如:

<a href="/path/to/angular-app/?returnUrl=/original/location">Login.</a>
Run Code Online (Sandbox Code Playgroud)

正如您在上面看到的,我需要传递一个名为returnUrl. 然后我需要在 Angular JS 应用程序中获取这个值,使用:

<a href="/path/to/angular-app/?returnUrl=/original/location">Login.</a>
Run Code Online (Sandbox Code Playgroud)

然而,这实际上返回一个空对象。我认为这是因为 Angular JS在 URL 参数之后附加#!/login在URL 上,如下所示:

example.com/path/to/app?returnUrl=/original/location/#!/login
Run Code Online (Sandbox Code Playgroud)

如果我在浏览器中修改 URL,将returnUrl参数移动到 URL 的末尾并刷新页面,它会工作并$location.search()返回{returnUrl: "/original/location/"}. 但是,据我所知,我无法在我的网站上更改此参数,因为该参数是指向 Angular JS 应用程序的链接的一部分,#!/login随后会自动添加。

我是新的 AngularJS,所以请尽可能清楚地解释:

  1. 这里发生了什么?为什么是URL参数之前#!/login
  2. 为什么这会阻止$location.search()返回任何东西?如果我将参数移动到结果 URL 的末尾,它就可以工作。
  3. 我能做些什么来解决这个问题?

javascript angularjs angular-routing

6
推荐指数
1
解决办法
1842
查看次数

为什么我们需要在哈希导航 URL 中使用 bang 标记?

我们正在开发带有哈希标签导航的 SPA。在另一个 SPA 网站上看到有散列标签 URL,如http://example.com/#!/users 我们的应用程序当前实现散列标签 URLS 没有 ! (bang,感叹号)像http://example.com/#/users 在 URL 中使用 bang 标记有什么原因吗?我已经检查了一些 SO 问题,一些文档: URL hash-bang (#!/) 前缀而不是 Angular 1.6 中的简单哈希 (#/) 人们希望摆脱他们的 SPA 中的感叹号。

但是,Angular Changelog 指出在 URL 中添加 bang 标记是一个重大变化:https : //github.com/angular/angular.js/blob/master/CHANGELOG.md#location-due-to

Google 的文档还显示了一个带有感叹号的示例:https : //developers.google.com/webmasters/ajax-crawling/docs/getting-started

我的主要问题是 - 我们需要在哈希 URL 中使用感叹号吗?这有什么意义吗?

提前感谢您的回答!

javascript hash hashtag single-page-application

5
推荐指数
2
解决办法
1085
查看次数