2013-03-29 3 views
2

Использование AngularJS, это:AngularJS - Нежелательные IE8 перенаправляет

<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?

+0

попробуйте добавить 'вернуть ложь,' в конце 'Нажмите()' функция – charlietfl

+0

не помогает, все еще получаю перенаправлять. –

+0

Что в 'Click()'? Еще один подход - использовать '$ event.preventDefault()' в 'Click()' функцию и добавить изменить html в: 'Click ($ event)', но 'return false' должен был сделать то же самое, и я думаю' ng-click 'предполагается предотвращать дефолт уже – charlietfl

ответ

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} 
3

button не работает должным образом в IE8 ,

+1

Это была проблема, с которой я столкнулся, хотя и краткий, ваш ответ указал мне на корень моей проблемы. Спасибо – Mutmatt

+0

Добро пожаловать! Рад, что помогло :) –

0

Я знаю, что это старый пост, но return false; не работает в обработчике ng-click.

Я обнаружил, что установить event.result к ложным, так JQuery потребляет событие после углового сделал это немного

$scope.Click = function ($event) {     

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

Нажмите мне

Это особенно полезно, если вы с помощью начальной загрузки, где у вас есть выпадающего меню .eg

<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> 
Смежные вопросы