AngularJS:将当前状态从视图传输到控制器

时间:2015-03-02 09:49:35

标签: angularjs angular-ui-router

我正在使用UI-Router。我有一个视图,我需要捕获它的当前状态,并将其作为参数发送到控制器作为按钮中的ng-click函数。

当我undefined函数console.log中传输的对象

时,以下方法返回transferState
<button ng-click="transferState($state.current.name)">Click me</button>

我该怎么做?

2 个答案:

答案 0 :(得分:1)

您必须将$ state传递给控制器​​,或者将run-phase传递给$ rootscope。 然后,您可以从视图中访问$ state。

e.g:

angular.module('myApp').controller('myCtrl', function($scope, $state) {

  $scope.$state = $state;

});

另见文档:https://github.com/angular-ui/ui-router/wiki/Quick-Reference#note-about-using-state-within-a-template

答案 1 :(得分:0)

一种常见的方法是将两个频繁使用的服务注入$rootScope。这在示例应用中使用 - app.js

.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;
}])

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