Как получить и опубликовать 2 объекта из ng-модели? - PullRequest
0 голосов
/ 18 января 2019

У меня есть образец документа из названных глав mongodb:

{_id:5c014c999cc48c3b0057988b, chapter_name:"AB"}

Контроллер: Вот моя функция, чтобы получить главы, и функция, чтобы отправлять в другой БД:

.controller('regCtrl', function($http, $location, $timeout, User, Bloodbankchapter) {
    Bloodbankchapter.getBloodbankchapters().then(function(data) {        
        app.bloodbankchapters = data.data.bloodbankchapters;                 
    });

this.regUser = function(regData) {
    User.create(app.regData).then(function(data) {});
};

Затем в моем интерфейсе, чтобы зарегистрироваться:

 <form name="regForm" ng-submit="register.regUser(regData); ">
    <label>Chapter Name</label> <!--After I select the chapter name -->
    <select ng-model="register.regData.branch" ng-options ="chapter._id as chapter.chapter_name for chapter in register.bloodbankchapters">
    <option ng-repeat="chapter in register.bloodbankchapters" >{{chapter.chapter_name}}</option>
    </select>

    <label>Chapter ID</label> <!--chapter ID will appear here-->
    <input type="text" ng-model="register.regData.branch_id" hidden>

    <label>Chapter name</label> <!--How to make chapter name appear here?-->
    <input type="text" ng-model="register.regData.branch_name" hidden>
    <button ng-disabled="register.disabled" type="submit">Submit</button>
</form>

Моя проблема здесь в том, что после того, как я выбрал название главы, второй ввод был правильным и он отправил идентификатор в базу данных, но как я могу получить имя главы и отправить его в базу данных?

Я попытался получить текстовое значение из поля выбора, а затем добавить его в текстовое поле, как показано здесь: http://jsfiddle.net/kxqJN/,, но когда я регистрируюсь, вместо имени_главы регистрируется идентификатор объекта, например:

`{branch_id:5c014c999cc48c3b0057988b, branch_name:"5c014c999cc48c3b0057988b"}`

Как отобразить имя в первом поле и идентификатор во втором?

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Могу поспорить, что вы не попробовали то, что я предложил в комментариях: chapter.chapter_name for chapter in register.bloodbankchapters track by chapter._id приведет вас к тому, что в вашей модели будут оба значения:

angular.module('selectExample', [])
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.register = {
      regData: {
        branch: {},
      },
      bloodbankchapters: [
        {_id:'5c014c999cc48c3b0057988b', chapter_name:"AB"},
        {_id:'5c014c999cc48c3b0057988c', chapter_name:"A"},
      ],
    };
  }]);
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="selectExample" ng-controller="ExampleController">
  <select ng-model="register.regData.branch" ng-options ="chapter.chapter_name for chapter in register.bloodbankchapters track by chapter._id">
    <option ng-repeat="chapter in register.bloodbankchapters" >{{chapter.chapter_name}}</option>
  </select>
  <div>{{register.regData.branch}}</div>
</div>
0 голосов
/ 18 января 2019

Попробуйте, таким образом, вы получите выделенный объект главы внутри register.regData.branch

<select ng-model="register.regData.branch" ng-options ="chapter as chapter.value for chapter in register.bloodbankchapters">
...