Использование функции в качестве параметра в контроллере

0

Хорошо, у меня есть контроллер, где мне нужно использовать функцию как параметр

angular.module('myCtrl', function($scope) {
 $scope.$on('lines:deselectLine', function(ev, slip) {
  _.each($scope.lineItems, function(lineItem) {
    _.each(lineItem, function(lineLeague) {
      _.each(lineLeague, function(line) {
        _.each(line.rows, function(row) {              
          if (row.nss + '' === slip.nss) {
            var line = slip.line;
            if (line === row.spread.line + '') {
              row.spreadSelected = false;
            }
            if (line === row.total.line + '') {
              row.totalSelected = false;
            }
            if (line === row.moneyLineId + '') {
              row.moneyLineSelected = false;
            }
          }
        });
      });
    });
  });
 });
});

это полная функция, но мне нужно отвести эту часть в функции

          if (row.nss + '' === slip.nss) {
            var line = slip.line;
            if (line === row.spread.line + '') {
              row.spreadSelected = false;
            }
            if (line === row.total.line + '') {
              row.totalSelected = false;
            }
            if (line === row.moneyLineId + '') {
              row.moneyLineSelected = false;
            }
          }

поэтому в конце мне понадобится что-то подобное

angular.module('myCtrl', function($scope) {
 $scope.$on('lines:deselectLine', function(ev, slip) {
  _.each($scope.lineItems, function(lineItem) {
    _.each(lineItem, function(lineLeague) {
      _.each(lineLeague, function(line) {
        _.each(line.rows, function(row, iWillBeFunctionParam) {              
           //SOMETHING NEW WILL HAPPEN HERE
        });
      });
    });
  });
 });

 $scope.iWillBeFunctionParam = function(slip) {
   if (row.nss + '' === slip.nss) {
      var line = slip.line;
      if (line === row.spread.line + '') {
         row.spreadSelected = false;
      }
      if (line === row.total.line + '') {
         row.totalSelected = false;
      }
      if (line === row.moneyLineId + '') {
         row.moneyLineSelected = false;
      }
    }
  };

});

Имейте в виду $scope.$on котором есть $emit...

Итак, что мне делать, чтобы использовать новую функцию в качестве параметра?

Теги:

1 ответ

1
Лучший ответ

Не похоже, что вам нужно передать функцию в качестве параметра в контроллер, поэтому ваш заголовок несколько запутан.

Кажется, что вы хотите вызвать какую-то функцию во внутреннем _.each. Возможно, я не понимаю ваши намерения, но я не вижу места, где этот iWillBeFunctionParam необходимо передать как параметр ко всему.

Итак, у вас есть следующее: будь то в контроллере или нет, не имеет значения - концептуально говоря:

var lines = [[], [], []]; // array of arrays

$scope.$on("foo", function(ev, slip){
  _.each(lines, function(line){
    _.each(line.rows, function(row){
      doSomethingWith(slip, line, row);
    })
  })
})

Затем вы можете определить свою функцию doSomethingWith:

function doSomethingWith(slip, line, row){
   // etc...
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню