AngularJS - Форма с элементом Select для получения идентификатора из другого объекта

0

У меня есть две таблицы "Категория" и "Публикация" с отношением "Один ко многим".

Категория: идентификатор, имя, описание

Публикация: id, title, content, category_id

И мне нужно получить идентификатор категории через элемент select и поместить его в поле category_id.

Форма публикации:

<form>
  <input type="text" ng-model="publication.title" placeholder="Title" />
  <input type="text" ng-model="publication.content" placeholder="Content" />
  <!-- Here is my problem because I can list all categories but I can't get the category id and put it in the category_id field -->
  <div ng-init="categories()">
    <select class="form-control" ng-model="category" ng-options="category.name for category in categories">
        <option value="">-- Select category --</option>
    </select>
   </div>
</form>

Это мой контроллер, чтобы получить все категории:

$scope.categories = function() {
    $http(
            {
                method : 'GET',
                url : '/prodemo/category'
            }).success(
                    function(data, status, headers, config) {
                        $scope.categories = data;
            }).error(
                    function(data, status, headers, config) {
            });
};

Как мне это сделать?

Теги:

2 ответа

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

как показано ниже со скрытым полем, вы можете легко сделать это

    <form>
      <input type="text" ng-model="publication.title" placeholder="Title" />
      <input type="text" ng-model="publication.content" placeholder="Content" />
      <input type="hidden" ng-model="publication.category_id = category.id" />

      <div ng-init="categories()">
        <select class="form-control" ng-model="category" ng-options="category.name for category in categories">
            <option value="">-- Select category --</option>
        </select>
       </div>
    </form>
  • 0
    Спасибо, чувак, но у меня есть следующая ошибка в консоли: Ошибка: [ngModel: nonassign] Выражение 'publishing.category_id = category.id' не может быть назначено .
  • 1
    Я думаю, что вы используете более старую версию angular js.this должна работать на angualarjs 1.4.1 '<script src = "// ajax.googleapis.com/ajax/libs/angularjs/1.4.1/angular.min.js «> </ скрипт>»
1
<select class="form-control" ng-change="getPubs()" ng-model="category" ng-options="category.name for category in categories">
    <option value="">-- Select category --</option>
</select>
<select class="form-control" ng-model="selected_pub" ng-options="pub.name for pub in publications">
    <option value="">-- Select Pub --</option>
</select>

В контроллере:

$scope.getPubs = function () {
   //or whatever the URL for filtering publications by catagory_id
   $http.get('/prodemo/publications/' +  $scope.category.id)
     .then(function (resp) { $scope.publications = resp})
}
  • 0
    Выглядит хорошо, но первым шагом является присвоение идентификатора категории (новой публикации) в форме публикации. Вот почему я пытаюсь получить идентификатор через элемент select и поместить его в поле category_id. Это то, что я не могу сделать сейчас. Помоги мне с этим маленьким кошмаром.
  • 0
    Я думал, что они должны были выбрать один сначала? Если нет, можете просто предварительно выбрать такой, как $ scope.category = $ scope.categories [0]

Ещё вопросы

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