Angularjs 您可以将ng click与ui sref一起使用吗?

Angularjs 您可以将ng click与ui sref一起使用吗?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我能做这个吗 <button ng-click='vm.foo()' ui-sref='state'>test</button> 测试 是ng单击将运行,然后您将转换到您的状态 (由于更新和工作) 但是,如果在ngClick中有$event.preventDefault(),它将不会将您转换到您的状态 完整代码示例 <!DOCTYPE html> <html ng-app='app'> <head> <script

我能做这个吗

<button ng-click='vm.foo()' ui-sref='state'>test</button>
测试

ng单击
将运行,然后您将转换到您的状态

(由于更新和工作)

但是,如果在
ngClick
中有
$event.preventDefault()
,它将不会将您转换到您的状态

完整代码示例

<!DOCTYPE html>
<html ng-app='app'>

  <head>
    <script data-require="angular.js@1.4.3" data-semver="1.4.3" src="https://code.angularjs.org/1.4.3/angular.js"></script>
    <script data-require="ui-router@*" data-semver="0.2.15" src="//rawgit.com/angular-ui/ui-router/0.2.15/release/angular-ui-router.js"></script>
    <link rel="stylesheet" href="style.css" />
    <script src="script.js"></script>
  </head>

  <body ng-controller='MainController as vm'>
    <ul>
      <li><a ui-sref='home'>home</a></li>
      <li><a ui-sref='one' ng-click='vm.test()'>one</a></li>
      <li><a ui-sref='two'>two</a></li>
    </ul>
    <div ui-view></div>
  </body>

</html>

angular
  .module('app', ['ui.router'])
  .config(config)
  .controller('MainController', MainController)
;

function config($locationProvider, $urlRouterProvider, $stateProvider) {
  $urlRouterProvider.otherwise('/');
  $stateProvider
    .state('home', {
      url: '/',
      templateUrl: 'home.html'
    })
    .state('one', {
      url: '/one',
      templateUrl: 'one.html'
    })
    .state('two', {
      url: '/two',
      templateUrl: 'two.html'
    })
  ;
}

function MainController($scope) {
  var vm = this;
  vm.test = function() {
    alert('test');
    console.log('test');
  }
}

  • 一个
  • 两个
有棱角的 .module('app',['ui.router'])) .config(配置) .controller('MainController',MainController) ; 函数配置($locationProvider、$urlRouterProvider、$stateProvider){ $urlRouterProvider。否则('/'); $stateProvider .州(“家”{ url:“/”, templateUrl:'home.html' }) .州(‘一’{ url:“/one”, templateUrl:'one.html' }) .州(“两个”{ url:“/two”, templateUrl:'two.html' }) ; } 功能主控制器($scope){ var vm=这个; vm.test=函数(){ 警报(“测试”); console.log('test'); } }
您试过了吗?发生了什么?你的
ng点击
很可能与一个控制器绑定,该控制器是否会出现在你的新状态中?@jamesalardice只是做了一点询问+回答,供人们将来参考。我认为这一切的目的是创建一个自我回答的问题(这是完全可以接受的)。然而,由于这个问题相当模糊,它似乎被否决了。除此之外,我真的不认为将答案移动到问题正文中的编辑是特别合适的。扩展问题以提供更多的信息或用例可能更合适。为什么不使用ng show/ng if并使用不同的ui sref呈现不同的锚定标记呢?“如果在
ngClick
”中有
$event.preventDefault()
,它也将为我转换到一个新状态。
$event.stopPropagation()
在一个
ng中单击
函数可以帮助修复和运行示例@andreTobilko
$event.preventDefault()
似乎适合我。