如何提升对象定义?

时间:2015-08-09 03:15:34

标签: javascript angularjs hoisting

在我正在构建的Angular应用中的js文件中,我想在顶部声明controller s,service s等,然后在下面定义它们。

我现在有这个工作,没关系。问题是,当我启动一个新文件时,我通常会复制现有文件的内容并更改函数的名称。但是,我必须经历一大堆功能名称,这很痛苦。我只是简单地更改包含这些函数的对象的名称,然后只更改

oldapp.controller

newapp.controller

为了更好地说明,这就是我现在拥有的

var pos__filejs_HomeApp = angular.module('ros.filejs.HomeApp', ['ui.router']);

pos_filejs_config.$inject = ['$stateProvider', '$urlRouterProvider'];
pos__filejs_HomeApp.config(pos_filejs_config);

pos_filejs_controller.$inject = ['$scope'];
pos__filejs_HomeApp.controller('ros.postjs.ctrl', pos_filejs_controller);

//----------------------------------------------------
//  FUNCTIONS
//----------------------------------------------------

function pos_filejs_config($stateProvider, $urlRouterProvider){
  // implementation
}

function pos_filejs_controller($scope){
  //implementation
}

这是我想要的东西:

var pos__filejs_HomeApp = angular.module('ros.filejs.HomeApp', ['ui.router']);

HomeApp.config.$inject = ['$stateProvider', '$urlRouterProvider'];
pos__filejs_HomeApp.config(HomeApp.config);

HomeApp.controller.$inject = ['$scope'];
pos__filejs_HomeApp.controller('ros.postjs.ctrl', HomeApp.controller);

//----------------------------------------------------
//  FUNCTIONS
//----------------------------------------------------

var HomeApp = {
  config: function ($stateProvider, $urlRouterProvider){
    // implementation
  },
  controller: function ($scope){
    //implementation
  }
}

这是相当简洁的,特别是随着文件越来越大,添加了更多的服务,配置。

问题是,我似乎无法将对象实现置于角度内容之下,因为对象不是“悬挂”的 - 也就是说,文件顶部对HomeApp的引用是{{ 1}}因为undefined只定义在较低的位置(HomeApp不是这样的。

如何提升物体,以便我可以在文件的较高位置使用它?

1 个答案:

答案 0 :(得分:0)

HomeApp被悬挂,但HomeApp悬挂为“未定义”。吊装不会为您定义价值。根据我的说法,您可以将代码视为

    var HomeApp = undefined;   
var pos__filejs_HomeApp = angular.module('ros.filejs.HomeApp', ['ui.router']);

    HomeApp.config.$inject = ['$stateProvider', '$urlRouterProvider'];
//Here HomeApp is undefined, Since you haven't assign any value;

    pos__filejs_HomeApp.config(HomeApp.config);
    HomeApp.controller.$inject = ['$scope'];
    pos__filejs_HomeApp.controller('ros.postjs.ctrl', HomeApp.controller);
//...
  

我不确定你为什么要写一个很难的代码   明白:-D