AngularJS:将当前状态从视图转移到控制器

AngularJS:将当前状态从视图转移到控制器,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在使用UI路由器。我有一个视图,我需要捕捉它的当前状态,并将其作为参数发送给控制器,以点击按钮中的ng功能 当Iconsole.log函数中传输的对象transferState <button ng-click="transferState($state.current.name)">Click me</button> 点击我 如何操作?您必须将$state传递给控制器,或在运行阶段传递给$rootscope。 然后可以从视图内部访问$state e、 g: 另请

我正在使用
UI路由器
。我有一个视图,我需要捕捉它的当前状态,并将其作为参数发送给控制器,以点击按钮中的
ng功能

当I
console.log
函数中传输的对象
transferState

<button ng-click="transferState($state.current.name)">Click me</button>
点击我

如何操作?

您必须将$state传递给控制器,或在运行阶段传递给$rootscope。 然后可以从视图内部访问$state

e、 g:


另请参阅文档:

一种常见的方法是将两个大量使用的服务注入
$rootScope
。这在示例应用程序中使用-

.run(['$rootScope','$state','$stateParams',',
函数($rootScope、$state、$stateparms){
//向$rootScope添加对$state的引用和$stateParams的引用非常方便
//以便您可以从应用程序中的任何范围访问它们。例如,
//
  • //在“contacts.list”或其Decedent之一处于活动状态时激活。 $rootScope.$state=$state; $rootScope.$stateParams=$stateParams; }])

  • 现在,每个视图都可以直接访问这些。示例应用程序是。

    是否使用ui路由器?问题是,当我在ng click函数中传递当前状态时,我的控制器中没有定义!实际上,只有当我在控制器中将我的“transferState()”函数声明为“$rootScope.transferState()”时,它才起作用@ng用户是否由ui路由器通过$stateProvider实例化myCtrl?或者这是您的默认/主控制器。通常,您有多个绑定到ui路由器状态的控制器,当该状态变为活动状态时,这些状态将变为活动状态,然后您在该控制器上有一个绑定到具有单击处理程序的视图的作用域。如果在rootScope上声明transferState,则视图将通过angulars查找机制访问它。实际上,只有当我将控制器内的“transferState()”函数声明为“$rootScope.transferState()”时,它才起作用!!
    angular.module('myApp').controller('myCtrl', function($scope, $state) {
    
      $scope.$state = $state;
    
    });
    
    .run(['$rootScope', '$state', '$stateParams',
      function ($rootScope, $state, $stateParams) {
    
      // It's very handy to add references to $state and $stateParams to the $rootScope
      // so that you can access them from any scope within your applications.For example,
      // <li ng-class="{ active: $state.includes('contacts.list') }"> will set the <li>
      // to active whenever 'contacts.list' or one of its decendents is active.
    
        $rootScope.$state = $state;
        $rootScope.$stateParams = $stateParams;
    }])