Как слить два угловых контроллера

0

Im работает с одним примером, чтобы добавить функцию поиска/фильтрации в таблицу углов. Имейте этот код, но не уверен, что делает:

У меня есть два контроллера.

  • eventCtrl: Уже работает, позвольте мне получить данные из db. создавать $scope.cars и отображать в угловом столе. Я хочу изменить, так что также включите функцию фильтра.

  • filterTableCtrl: тот, который используется в примере. Работает нормально на образце, и я пытаюсь объединить этот код с моим контроллером, также необходимо внести некоторые изменения, потому что будет искать несколько полей.

filterTableCtrl:

  1. имеет некоторые значения между [.. ], не знаю, что это такое, моя версия не использует этот синтаксис.

  2. эта версия имеет $filter my need $http чтобы получить данные с сервера, как я объединять оба.

  3. Я ищу "filter" но не нашел его, поэтому не знаю, какую функциональность добавить в фильтр.

  4. $scope.list - это исходный список, а #scope.query - текстовая модель ввода. Эта часть, которую я понимаю

  5. Но зачем комментировать другую функцию $scope.getList()

-

var app5 = angular.module("angular-table-example").controller("filteredTableCtrl", 
               ["$scope", "$filter", function ($scope, $filter) {
    $scope.list = $scope.$parent.personList;
    $scope.filteredList = $scope.list;

    // $scope.getList = function() {
    //   return $filter("filter")($scope.list, $scope.query);
    // }

    $scope.del = function (i) {
        console.log("index: " + i);
        $scope.list.splice(i, 1);
        $scope.updateFilteredList();
    }

    $scope.updateFilteredList = function () {
        $scope.filteredList = $filter("filter")($scope.list, $scope.query);
    };

}])

Это мой код и уже работает. Уже можно использовать $scope.cars чтобы показать результат из db в таблице.

eventCtrl:

  1. Что такое sintaxis для добавления $filter
  2. Как я вызываю $scope.updateFilteredList для обновления списка после поступления новых данных.
  3. что такое "filter"

-

app5.controller('eventCtrl', function ($scope, $http) {
    // create a dummy object so the table doesnt give js errors
    // dont know if there is a better way to do this.
    $scope.cars = [
        { Car_ID: null, X: null, Y: null, 
          RoadName: null, Azimuth: null, DateTime: null, 
          Adress: null }
    ];

    // want add the filtered list like the other controller
    $scope.filteredList = $scope.cars;

    // but dont have $filter and dont know what is 'filter'
    $scope.updateFilteredList = function () {
        $scope.filteredList = $filter("filter")($scope.cars, $scope.filter_id);
    };

    // this is working fine until i try add the filtered list.
    $http.get('getCars')
       .then(function (res) {
           $scope.cars = res.data;
           // how call the filtered function here?
           $scope.filteredList = $filter("filter")($scope.cars, $scope.filter_id);
       });

});
  • 0
    Вы можете прояснить вопрос? Что именно ты пытаешься сделать
  • 0
    @MB Я пытаюсь понять пример, чтобы отфильтровать строки в моей таблице, используя угловые. Но есть несколько вопросов.
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ
  1. Угловой должен знать, что вы вводите, когда вы уменьшаете свой код, переменные, такие как $ scope и $ filter, меняются на "a" или "b". Без этих [$ scope ','.. '] угловатые не знали бы, что вводить в "a" и "b". Это не нужно, если вы не уменьшите.

  2. При необходимости вы можете вводить как $ http, так и $ filter в свой контроллер.

  3. $ filter в угловых данных мутанта. Фильтр внутри этого контроллера фильтрует список с данными из запроса. (Я точно не знаю, что вы здесь хотите)

  4. Хорошо

  5. Потому что он не используется, вероятно.


  1. Просто добавьте $ filter после '$ scope, $ http'.

  2. Вам не нужно, отфильтрованный список уже обновляется после поступления данных (внутри ".then(function..."). Если вы хотите:

 $http.get('getCars')
  .then(function (res) {
     $scope.cars = res.data;
     $scope.updateFilteredList();
  });
  1. Фильтр делает именно это, фильтрует значение, соответствующее заданному запросу. Проверьте документы здесь.
  • 0
    Я думаю, что вы пропустили номер на последней паре пунктов. 7 должно быть 8. Я не хочу повторять код, поэтому я создаю функцию. Но не могу вызвать его внутри моего запроса $htpp
  • 0
    Изменить $ scope.filteredList = $ filter ("filter") ($ scope.cars, $ scope.filter_id); to $ scope.updateFilteredList ();
Показать ещё 5 комментариев
1

Я думаю, что первое, что вам действительно нужно, объясняет. Синтаксис, используемый для зависимостей, представляет собой встроенную запись в виде массива, которая является способом обеспечения того, чтобы Angular знал, какие зависимости вы запрашиваете, даже если ваш JS получает оценку.

Он принимает форму массива, содержащего любое количество строк (каждое из которых является именем нужной вам зависимости), за которым следует ваша функция контроллера, которая принимает параметры для соответствия зависимостям (!! в том же порядке, что и массив, который их перечисляет! !).

Пример:

app5.controller('eventCtrl', ['$scope','$http','$filter', function ($scope, $http, filter) {

    $http.get(/* Do whatever HTTP stuff you want here*/)
        .then(function(results){
            $scope.filteredList = $filter("filter")($scope.list, $scope.query);
            //Or do whatever you want to do with the results
        });

} //End of controller function
] /*End of the dependency array*/)

Ещё вопросы

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