Javascript AngularJS使用配置和指令中控制器中定义的函数

Javascript AngularJS使用配置和指令中控制器中定义的函数,javascript,angularjs,angularjs-scope,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") { retu

我对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()
是未定义的

是否有一种变通方法,允许我在配置中使用控制器中定义的函数?或者我应该用另一种方式来解决这个问题


谢谢你的帮助

没有简单的方法可以访问应用程序配置部分中控制器上定义的函数

最简单的解决方法是全局定义函数,这样就可以从app config、controller和directive轻松地访问它。由于函数不依赖于控制器的任何数据或范围变量,因此这不应该是一个太大的问题

此外,您可能需要重新考虑是否有必要再次在配置部分和指令中检查页脚中的类(类不太可能更改,对吗?)。另外,请注意,如果使用angular渲染页脚,则当应用程序的
config
方法运行时,页脚将无法访问