如何从 ng-model 中获取 post 2 个对象?
How to get and post 2 objects from ng-model?
我这里有来自 mongodb 命名章节的示例文档:
{_id:5c014c999cc48c3b0057988b, chapter_name:"AB"}
Controller: 这是我获取章节的功能,以及 post 到另一个数据库的功能:
.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>
我的问题是在我 select 编辑了章节名称之后,第二个输入是正确的并且它 post 将 id 放入数据库中,但是我怎样才能得到 chapter.name 和post 到 db?
我尝试从 select 框中获取文本值,然后将其附加到文本框,如下所示:http://jsfiddle.net/kxqJN/,但是当我注册时,注册的是对象 ID 而不是 chapter_name 像这样:
`{branch_id:5c014c999cc48c3b0057988b, branch_name:"5c014c999cc48c3b0057988b"}`
如何在第一个框中显示姓名,在第二个框中显示id?
试试这个方法,你会在register.regData.branch
中得到选中的章节对象
<select ng-model="register.regData.branch" ng-options ="chapter as chapter.value for chapter in register.bloodbankchapters">
我打赌你没有尝试过我在评论中建议的方法: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>
我这里有来自 mongodb 命名章节的示例文档:
{_id:5c014c999cc48c3b0057988b, chapter_name:"AB"}
Controller: 这是我获取章节的功能,以及 post 到另一个数据库的功能:
.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>
我的问题是在我 select 编辑了章节名称之后,第二个输入是正确的并且它 post 将 id 放入数据库中,但是我怎样才能得到 chapter.name 和post 到 db?
我尝试从 select 框中获取文本值,然后将其附加到文本框,如下所示:http://jsfiddle.net/kxqJN/,但是当我注册时,注册的是对象 ID 而不是 chapter_name 像这样:
`{branch_id:5c014c999cc48c3b0057988b, branch_name:"5c014c999cc48c3b0057988b"}`
如何在第一个框中显示姓名,在第二个框中显示id?
试试这个方法,你会在register.regData.branch
中得到选中的章节对象<select ng-model="register.regData.branch" ng-options ="chapter as chapter.value for chapter in register.bloodbankchapters">
我打赌你没有尝试过我在评论中建议的方法: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>