如何使用 angularjs 预填充 select 选项自定义指令
How to pre-populate select options custom directive using angularjs
我是创建指令的新手,该指令将在我的整个申请过程中为我提供帮助。我基本上想创建一个预填充选项的自包含 select 元素指令。对于最终结果,我想做的就是将 ngModel 绑定到它以进行设置和检索。我的 html 标记如下所示:
<div family-drop-down
humans-only="true"
ng-model="vm.selectedFamilyMember"></div>
这里是 angular 代码:
(function(){
'use strict';
angular.module('app', [])
.controller('familyController', function(){
var self = this;
self.title = '';
self.selectedFamilyMember = {};
function init(){
self.title = 'drop down example';
}
init();
})
.directive('familyDropDown', function(){
function helperController(){
var self = this;
self.family = [];
self.init = function() {
self.family = [
{id: 1, firstName: 'John', lastName: 'Doe', human: true},
{id: 2, firstName: 'Jane', lastName: 'Doe', human: true},
{id: 3, firstName: 'Baby', lastName: 'Doe', human: true},
{id: 4, firstName: 'Dog', lastName: 'Doe', human: false}
];
};
}
return {
restrict: 'AE',
replace: true,
required: '^ngModel',
scope: {
humansOnly: '@',
ngModel: '='
},
controller : helperController,
controllerAs: 'vm',
template: [
'<select ',
'id = "ddlFamily" ',
'name = "family" ',
'class = "form-control" ',
'ng-options = "(fam.firstName + " " + fam.lastName + " (" + fam.id + ")") for fam in vm.family" ',
'required ',
'title= "select family member in drop-down-list"> ',
'<option value="">select member</value> ',
'</select>'
].join(''),
link: function(scope, element, attrs, ctrl){
attrs('ng-model', scope.ngModel);
ctrl.init();
}
};
});
})();
笨蛋:http://plnkr.co/edit/XfLRD8pzBISvQgV1mRqd?p=preview
提前感谢您的宝贵时间和帮助。
ngOption
属性中 "
的引号转义不正确。正确的应该是:
template: [
'<select ',
'name="family" ',
'class="form-control" ',
'ng-options="(fam.firstName + \' \' + fam.lastName + \' (\' + fam.id + \')\') for fam in vm.family" ',
'required ',
'title= "select family member in drop-down-list"> ',
'<option value="">select member</value> ',
'</select>'
].join(''),
演示: http://plnkr.co/edit/RLGc9dAElD1wpLN8uPm0?p=preview
另请注意,它是 require
而不是 required
。并且由于您输入错误 - 您可以将它们全部删除,在您的情况下不需要它(您使用的是范围 ngModel: '='
绑定)。
我是创建指令的新手,该指令将在我的整个申请过程中为我提供帮助。我基本上想创建一个预填充选项的自包含 select 元素指令。对于最终结果,我想做的就是将 ngModel 绑定到它以进行设置和检索。我的 html 标记如下所示:
<div family-drop-down
humans-only="true"
ng-model="vm.selectedFamilyMember"></div>
这里是 angular 代码:
(function(){
'use strict';
angular.module('app', [])
.controller('familyController', function(){
var self = this;
self.title = '';
self.selectedFamilyMember = {};
function init(){
self.title = 'drop down example';
}
init();
})
.directive('familyDropDown', function(){
function helperController(){
var self = this;
self.family = [];
self.init = function() {
self.family = [
{id: 1, firstName: 'John', lastName: 'Doe', human: true},
{id: 2, firstName: 'Jane', lastName: 'Doe', human: true},
{id: 3, firstName: 'Baby', lastName: 'Doe', human: true},
{id: 4, firstName: 'Dog', lastName: 'Doe', human: false}
];
};
}
return {
restrict: 'AE',
replace: true,
required: '^ngModel',
scope: {
humansOnly: '@',
ngModel: '='
},
controller : helperController,
controllerAs: 'vm',
template: [
'<select ',
'id = "ddlFamily" ',
'name = "family" ',
'class = "form-control" ',
'ng-options = "(fam.firstName + " " + fam.lastName + " (" + fam.id + ")") for fam in vm.family" ',
'required ',
'title= "select family member in drop-down-list"> ',
'<option value="">select member</value> ',
'</select>'
].join(''),
link: function(scope, element, attrs, ctrl){
attrs('ng-model', scope.ngModel);
ctrl.init();
}
};
});
})();
笨蛋:http://plnkr.co/edit/XfLRD8pzBISvQgV1mRqd?p=preview
提前感谢您的宝贵时间和帮助。
ngOption
属性中 "
的引号转义不正确。正确的应该是:
template: [
'<select ',
'name="family" ',
'class="form-control" ',
'ng-options="(fam.firstName + \' \' + fam.lastName + \' (\' + fam.id + \')\') for fam in vm.family" ',
'required ',
'title= "select family member in drop-down-list"> ',
'<option value="">select member</value> ',
'</select>'
].join(''),
演示: http://plnkr.co/edit/RLGc9dAElD1wpLN8uPm0?p=preview
另请注意,它是 require
而不是 required
。并且由于您输入错误 - 您可以将它们全部删除,在您的情况下不需要它(您使用的是范围 ngModel: '='
绑定)。