AngularJS使用在Config和Directive

时间:2016-03-14 16:38:22

标签: javascript angularjs angularjs-scope

我对Angular没有很多经验,而且我在app.config()

中使用函数时遇到了问题

我的控制器中定义了一个函数,它在我的html页脚上检查特定的css属性:

app.controller('MyController', function($scope) {

  var footer = $scope.footer;

  $scope.checkSmall = function() {
    if(footer.css("flex-flow") != "row nowrap") {
      return true;
    } else {
      return false;
    }
  };

});

这是在一个指令中调用的:

app.directive('radio', function() {
  return {
    controller: 'MyController',
    link: function(scope, element, attrs) {
      element.bind('click', function() {
        if(scope.checkSmall()) {
          // stuff
        }
      })
    },
  }
});

它在那里工作得很好。问题是我想在我的app.config()

中使用相同的功能

这就是我现在所拥有的:

app.config(function($stateProvider, $urlRouterProvider) {
  // Check screen size
  $urlRouterProvider.otherwise(((checkSmall()) ? '/' : '/full'));

但它显然告诉我checkSmall()未定义。

是否有解决方法,允许我在配置中使用我的控制器中定义的功能?或者我应该采用不同的方式来解决这个问题?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

没有简单的方法可以访问应用程序配置部分内控制器上定义的功能。

最简单的解决方法是全局定义函数,以便以简单的方式从app-config,controller和directive访问它。由于该功能不依赖于控制器的任何数据或范围变量,因此这不应该是一个问题。

另外,你可能想重新考虑是否需要在配置部分和指令中同时检查页脚中的类(类不太可能改变,对吧?)。此外,请注意,如果您使用角度渲染页脚,则在应用程序的config方法运行时,将无法访问该页脚。