问题描述
我正在尝试创建一个HTML select组件,该组件将填充包含多个项目的对象。组件就是这个:
<div class="form-group col-sm-4">
<select id="institutionControlSelector"
ng-model="controlItems.selectedOption"
ng-options="option.name for option in controlItems.availableOptions track by option.id"
ng-change="ctrl.getInstitutionControlNumber(controlItems.selectedOption)"
class="form-control">
</select>
</div>
这是此HTML模板中的指令:
(function () {
angular
.module('LaborMarket')
.directive('laborMarketProgramReview',directive);
function directive() {
return {
restrict: 'E',templateUrl: 'jsp/labormarket/labormarket.programreview.template.html',scope: {
siSectionId: '=',model: '=',orgEntityId: '=',designModeEnabled: '=',isEditable: '=',onChange: '&'
},controller: controller,controllerAs: 'ctrl',bindToController: true,priority: 8000
};
}
controller.$inject = ['$scope','ProgramReviewService'];
function controller($scope,ProgramReviewService) {
var vm = this;
$scope.controlItems = {
availableOptions: [{id: 0,name: 'Select an option'},{id: 1,name: 'Public Institution'},{
id: 2,name: 'Private Nonprofit Institution'
},{id: 3,name: 'Private For-profit Institution'},{id: 4,name: 'Not Available'}],selectedOption: {id: 0,name: 'Select an option'}
};
vm.controlOptionNumber = getInstitutionControlNumber($scope.controlItems.selectedOption);
vm.getInstitutionControlNumber = getInstitutionControlNumber;
}
function getInstitutionControlNumber(controlOption) {
var controlNumber = 0;
switch (controlOption.name) {
case 'Public Institution':
controlNumber = 1;
break;
case 'Private Nonprofit Institution':
controlNumber = 2;
break;
case 'Private For-profit institution':
controlNumber = 3;
break;
case 'Not Available':
controlNumber = -3;
break;
}
$scope.$broadcast('controlNumber',controlNumber);
return controlNumber;
}
我想做的是,当我在此下拉列表中选择某项内容时,它应该采用选择的值并将其发送到另一个指令,该指令根据我发送的值绘制表格。它可以与事件解决方案一起很好地工作,但是问题在于,当页面第一次广播时,由于未知原因而第一次启动(刚进入)时,位于第二个指令的指令的链接部分(如下)一种),它是未定义的,但更改后可以使用。
我对AngularJS还是很陌生,所以我不知道我对事件的处理是不是一个好习惯。
(function () {
angular
.module('LaborMarket')
.directive('laborMarket',directive);
function directive() {
return {
restrict: 'E',require: '^laborMarketProgramReview',templateUrl: 'jsp/labormarket/labormarket.template.html',scope: {
topCode: '=',cipCode: '=',enableWatchers: '='
},priority: 8000,link: function (scope) {
scope.$on('controlNumber',function (e,data) {
console.log("Datos: ",data);
this.controlNumber = data;
});
}
};
}
//function that builds the table based on the dropdown value
function completionDetails(completionDataList) {
var filteredCompletionList = [];
console.log("Control number: ",this.controlNumber);
vm.laborMarketForCompleterData = _.slice(
_.orderBy(completionDataList,['completersCount'],['desc']),5
);
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)