Javascript 如何将我的代码转换成不同的语法?

Javascript 如何将我的代码转换成不同的语法?,javascript,angularjs,Javascript,Angularjs,我在尝试将另一个人的代码转换成另一种约定/语法的体面代码时遇到了一个小问题 function AppController($scope, $window, dataService) { var vm = this; vm.dateFormat = 'dd/MM/yyyy, hh:mm a'; vm.appLastUpdate = dataService.lastUpdate; vm.sync = sync; vm.online = na

我在尝试将另一个人的代码转换成另一种约定/语法的体面代码时遇到了一个小问题

function AppController($scope, $window, dataService) {
  var vm = this;

  vm.dateFormat    = 'dd/MM/yyyy, hh:mm a';
  vm.appLastUpdate = dataService.lastUpdate;
  vm.sync          = sync;
  vm.online        = navigator.onLine;

  $window.addEventListener('offline', detectConnection, false);
  $window.addEventListener('online', detectConnection, false);

  return vm;

  function sync() {
    vm.idle = true;
    dataService
      .sync()
      .then(function () {
        vm.idle = false;
        vm.showSync = false;
        vm.appLastUpdate = Date.now();
      });
  }

  function detectConnection() {
    $scope.$apply(function () {
      vm.online = navigator.online;
    });
  }
}
这就是我目前所拥有的,但我需要这样做

.controller('AppController', function($scope, $window, dataService) {...})
我对vm.stuff之类的东西有一些问题


那么,在将代码翻译成另一种语法之前,我应该考虑什么呢?

我认为控制器中的这种语法被认为是使用controllerAs语法工作的。也许我错了,但是你可以快速浏览一下这个页面,例如:,希望如此helps@edrian好的,但我不想要虚拟机了。我应该怎么做?本例中的vm表示$scope,因此如果您想将此控制器作为常规控制器而不使用controllerAs,则应将vm替换为$scope以向视图发送更新。还删除了returnVM语句。它已经很不错了-您需要检查第一条注释中提到的controllerAs语法。不要转换此代码,从中学习。我认为您使用的是angular的旧版本。这就是为什么您可以将控制器函数定义为全局。您需要通过创建模块来遵循模块化方法。。