2015-04-26 3 views
1

Я новичок в angularjs, и у меня возникают проблемы. Обычно я нахожу способ исправить это, но не в этот раз.md-button исчезает при добавлении href

Так что проблема заключается в том, что я хочу использовать md-кнопку в качестве ссылки на другую страницу. Но, когда я добавляю href, кнопка исчезает со страницы. Вот мой код:

home.html

<body ng-app="friend-s-app"> 
    <div ng-controller="friendsappController"> 
     <md-toolbar> 
      <div class="md-toolbar-tools"> 

     <md-button href="/home.html" > 
      Home 
     </md-button> 

    </div> 
</md-toolbar> 
</div> 

<script src="bower_components/angular/angular.min.js"></script> 
<script src="bower_components/angular-aria/angular-aria.min.js"></script> 
<script src="bower_components/angular-animate/angular-animate.min.js"></script> 
<script src="bower_components/hammerjs/hammer.min.js"></script> 
<script src="bower_components/angular-material/angular-material.min.js"></script> 
<script src="bower_components/angular-messages/angular-messages.min.js"></script> 
<script src="app.js"></script> 

app.js в случае, если вы хотите:

(function(angular, undefined){ 
     "use strict"; 

     angular 
      .module('friend-s-app', ['ngMaterial', 'ngMessages', 'ng']) 
      .controller('friendsappController', inscriptionEditor) 
      .controller('InscriptionSheet', InscriptionSheet); 

function inscriptionEditor($scope, $mdDialog) { 
    var alert; 

    $scope.myPathVariable = 'path/to/somewhere'; 
    $scope.showInscription = showInscriptionSheet; 
    $scope.showSignIn = showSignIn; 
    function showInscriptionSheet($event) { 
     $mdDialog.show({ 
      targetEvent: $event, 
      template: 
      '<md-dialog layout="column">' + 
       '<md-content>' + 
        '<form style="padding: 20px;">' + 
         '<div layout="row">' + 
          '<md-input-container>' + 
           '<label>First name</label>' + 
           '<input ng-model="user.firstName" required/>' + 
           '<div ng-messages="userForm.firstName.$error" ng-show="userForm.firstName.$dirty">' + 
            '<div ng-message="required">This is required!</div> '+ 
           '</div>' + 
          '</md-input-container>' + 
          '<md-input-container>' + 
           '<label>Last name</label>' + 
           '<input ng-model="user.lastName" required/>' + 
           '<div ng-messages="userForm.lastName.$error" ng-show="userForm.lastName.$dirty">' + 
            '<div ng-message="required">This is required!</div> '+ 
           '</div>' + 
          '</md-input-container>'+ 
         '</div>'+ 
         '<md-input-container style="width: 50%">' + 
          '<label>Nickname</label>' + 
          '<input ng-model="user.nickname" required minlength="5" maxlength="15"/>' + 
         '</md-input-container>' + 
         '<div layout="row">' + 
          '<md-input-container>' + 
           '<label>Password</label>' + 
           '<input ng-model="user.password" type="password" required minlength="5" maxlength="15"/>' + 
          '</md-input-container>' + 
          '<md-input-container>' + 
           '<label>Repeat password</label>' + 
           '<input ng-model="user.repassword" type="password" required minlength="5" maxlength="15"/>' + 
          '</md-input-container>'+ 
         '</div>'+ 
         '<md-input-container>' + 
          '<label>E-mail</label>' + 
          '<input ng-model="user.email" required/>' + 
         '</md-input-container>'+ 
         '<div layout="row">'+ 
          '<md-button ng-Click="closeDialog()" style="width:50%">' + 
           'Cancel' + 
          '</md-button>' + 
          '<md-button style="width: 50%">' + 
           'Validate' + 
          '</md-button>' + 
         '</div>'+ 
        '</form>'+ 
       '</md-content>'+ 
      '</md-dialog>', 

      controller: 'InscriptionSheet', 
      onComplete: afterShowAnimation, 
      locals: { employee: $scope.userName } 
     }); 


     function afterShowAnimation(scope, element, options) { 
     } 
    } 
    function showSignIn($event) { 
     $mdDialog.show({ 
      targetEvent: $event, 
      template: 
      '<md-dialog>' + 
       '<md-content>' + 
       '<md-input-container>' + 
        '<label>Nickname</label>' + 
        '<input ng-model="user.nickName" required/>' + 
        '<div ng-messages="userForm.nickName.$error" ng-show="userForm.nickName.$dirty">' + 
         '<div ng-message="required">This is required!</div>' + 
        '</div>' + 
       '</md-input-container>' + 
       '<md-input-container>' + 
        '<label>Password</label>' + 
        '<input ng-model="user.password" required type="password"/>' + 
        '<div ng-messages="userForm.password.$error" ng-show="userForm.password.$dirty">' + 
         '<div ng-message="required">This is required!</div> '+ 
        '</div>' + 
       '</md-input-container> ' + 
       '<div layout="row">'+ 
        "<md-button ng-Click=\"closeDialog()\" style=\"width: 50%\" >" + 
         'Cancel' + 
        '</md-button>' + 
        '<md-button style="width: 50%" href="home.html">' + 
         'Validate' + 
        '</md-button>' + 
       '</div>'+ 
       '</md-content>' + 
      '</md-dialog>', 

      controller: 'InscriptionSheet', 
      onComplete: afterShowAnimation, 
      locals: { employee: $scope.userName } 
     }); 

     function afterShowAnimation(scope, element, options) { 
     } 
    } 
} 

function InscriptionSheet($scope, $mdDialog, employee) { 
    $scope.employee = employee; 

    $scope.closeDialog = function() { 
     $mdDialog.hide(); 
    }; 
} 

    })(angular); 

И есть результаты: Без href: http://i.stack.imgur.com/zKRKS.png

С его помощью:

спасибо, что помогли мне.

+0

'href' on button никогда не будет работать, он имеет событие click –

+0

' href' поддерживается 'md-button'. Прикрепление атрибута 'href' к' md-button' просто превращает его в тег 'a', а не' button'. – jtrussell

+1

Ссылка на plunkr/codepen/jsbin будет очень полезна! – jtrussell

ответ

1

Я только что испытал подобную проблему. Обратите внимание, что когда вы переключаетесь с ng-click на ng-href, вместо кнопки будет добавлен тег привязки. Чтобы поддерживать те же визуальные характеристики, мне нужно было применить display: inline-block; к классу .md-button (который добавляется к вышеупомянутому тегу привязки) в моем CSS. Это может быть причиной его исчезновения на вашей стороне.

Сообщите мне, если это имеет смысл или требует дальнейшей разработки.