zcasper
@zcasper
свободный человек

Как создать виджет поиска по сайту на AngularJS?

есть файлик layout.php, в котором определены блоки content и rightSide.

<html ng-app="app">
<body>
  <div class=content><div ng-view></div></div>
  <div class="rightSide">
<form class="form-inline" role="form">
    <div class="input-group">
        <input
            type="text"
            name="query"
            class="form-control"
            placeholder="<?= $lang->search_place ?>"
            value="<?=$this->container->request->query('query')?>"
        />
        <span class="input-group-btn">
            <button
                class="btn btn-info"
                ng-controller="SearchCtrl"
                ng-click="setSearch(jQuery('input.form-control[mane=query]').val())"
            >
                <?= $lang->search ?>
            </button>
        </span>
    </div>
</form>
  </div>
</body>
</html>


И соответствующий js(coffeScript) для поиска:

'use strict'

class SearchCtrl
  @$inject: [ '$scope', '$location', '$routeParams', 'SearchService' ]

  constructor: (@scope, @location, @routeParams, @SearchService) ->
    @scope.search_string = @routeParams.query
    this.loadingSearch()


  loadingSearch: ->
    @scope.loadingPromise = @SearchService.getList {q: @scope.search_string}

    @scope.loadingPromise.then (data) =>
      @scope.elements = data

  setSearch: (data) ->
    debugger
    @location.url '/search?query='+data


angular.module('SearchModule').controller 'SearchCtrl', SearchCtrl


Проблема:
При нажатии на кнопку поиск происходит отправка формы средствами html а не angular и соответственно debbuger не срабатывает.

Проблема2:
Как-то криво цепляется $location, может цепляю криво, в JS не силён.
  • Вопрос задан
  • 729 просмотров
Пригласить эксперта
Ответы на вопрос 1
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
Что то мне кажется Вы намешали
1. Дайте имя формы
2. Инпуту дайте модель
3 Проверяйте средствами Angular

В кратце примерно так (с кофе скиптом не знаком просто)
<form name ="searchForm">
<input type="text" name="search" ng-model="search.name" placeholder="Поиск" required>
<button type="submit" ng-click="search(searchForm.$valid)">Поиск</button>


соответсвенно search.name в контроллере будет Ваша строка поиска. отправляйте получайте и делайте что хотите..
код контроллера
....
$scope.search = function(valid) {
 if (valid) {
Ваш код
...
}
};
</code
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы