splincodewd
@splincodewd
Developer

Как вынести функции за пределы контроллера?

Есть код, условный:
// js/controller/MainController'.js
app.controller('MainController', ['$scope', function($scope) { 
$scope.title = 0;

// обработчик
$scope.clickFn = nameFuncion;

}]);

// js/handler/nameFunction.js
function  nameFuncion(){
$scope.title = 1; // не видит $scope, в принципе логично, но можно ли как-то исправить?
}


Просто мне в Си нравится то, что прототип функции (название) можно описать в классе в файле хедера, и тогда можно легко читать интерфейс такого класса, а уже сама реализация в файле cpp, можно такое сделать и на JS?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 2
Вот как раз с этого и начинаются все проблемы, когда вы пассатижи начинаете использовать как молоток, просто потому, что привыкли к молотку.
Можно делать так:

app.controller('MainController', ['$scope', function($scope) {
  $scope.title = 0;
  // с помощью bind() можно явным образом задать контекст
  $scope.clickFn = nameFuncion.bind($scope);
}]);

function nameFuncion(){
  this.title = 1;
}
Ответ написан
Zippovich
@Zippovich
сплю, ем, сплю, ем, сплю, ем
сделайте сервис, подключите его к контроллеру и используйте паблик его функции

// js/controller/MainController'.js
app.controller('MainController', ['$scope', 'someService', function($scope, someService) { 
$scope.title = someService.title = 0;

// обработчик
$scope.clickFn = someService.nameFuncion;

}]);

app.service('someService', [function() {

  var title;
  function  nameFuncion(){
    title = 1;
  }

  return {
    title: title,
    nameFunction: nameFunction
  }
}]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы