2

使用 AngularJS,这:

<a ng-click="Click()" ng-href="#">Click me</a>

在 IE8 中重定向到 /#。就像这样:

<a ng-click="Click()" href="#">Click me</a>

和这个:

<a ng-click="Click()">Click me</a>

最后一个转到/。我正在遵循使 IE 快乐的所有准则:

<!--[if lt IE 9]>
  <script src="js/3rd party/html5.js"></script>
<![endif]-->
<!--[if lte IE 8]>
  <script>
    document.createElement('ng-include');
    document.createElement('ng-pluralize');
    document.createElement('ng-view');
    document.createElement('ng:include');
    document.createElement('ng:pluralize');
    document.createElement('ng:view');
  </script>
<![endif]-->
<!--[if lt IE 8]>
  <script src="js/3rd party/json2.js"></script>
<![endif]-->

包括使用这个:

<div ng-view></div>

它不会发生在 IE7 或任何好的浏览器中。只有IE8。

我想要它做的就是调用我的作用域的 Click 函数,而不做任何重定向。我怎样才能在 IE8 中实现这一点?

4

3 回答 3

3

button在 IE8 中无法正常工作。

于 2014-01-15T11:19:07.470 回答
0

关闭 html5Mode

$locationProvider.html5Mode(false);

这将解决问题,但我的问题是为什么?


更好的解决方案是使用按钮而不是

<button ng-click="Click()" class="link">Click me</button>

您可以使用 CSS 更改按钮的样式

button.link { border:none; background: none;}
button.link:hover {text-decoration:underline}
于 2013-07-16T23:08:03.420 回答
0

我知道这是一篇旧文章,但return false;在 ng-click 处理程序中不起作用。

我发现我必须将 event.result 设置为 false,这样 jQuery 会在 Angular 完成后消耗事件

$scope.Click = function ($event) {                

            // needed for IE8 - jQuery will preventDefault action for href=#                
            if ($event != undefined) {
                $event.result = false;
            }
        }

点我

如果您使用的是引导程序,这将特别有用,其中您有一个下拉菜单。例如

<button type="button" class="btn dropdown-toggle btn-primary" ng-disabled="disabled">
    Actions <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
    <li><a href="#" ng-click="Click1($event)">Option 1</a></li>
    <li><a href="#" ng-click="Click2($event)">Option 2</a></li>
    <li><a href="#" ng-click="Click3($event)">Option 3</a></li>        
</ul>
于 2014-08-13T09:18:54.493 回答