我有一个带有以下模板(jade语法)的angular-bootstrap模态对话框:
div.modal-body
select(ng-model="chosenProject" id="chosenProject", ng-options="c.value as c.name for c in selectItems")
div.modal-footer
button.btn.btn-primary(ng-click="ok()") Change project
button.btn.btn-warning(ng-click="cancel()") Cancel
数组的预填充工作正常。 Dialog配置了其控制器,该控制器定义了琐碎的ok()函数,以下是来自控制器主体的摘录:
$scope.chosenProject = 0; // needed to have selected initial item with value=-1 in the select
$scope.ok = function () {
console.log("OK clicked, chosenProject " + $scope.chosenProject);
$modalInstance.close($scope.chosenProject);
};
功能正常。考虑到console.log,$ scope.chosenProject仍然与我在select中选择的内容相同,只是返回我在“ $ scope.chosenProject = 0;”行中预设的内容。我感谢如何解决此问题的建议。
最佳答案
发生此问题是由于控制器和模式模板之间存在包含范围。
请尝试以下操作-在模态控制器中,替换为:
$scope.chosenProject = 0;
与
$scope.chosenProject = {
value: 0
};
和模态模板,替换
select(ng-model="chosenProject" id="chosenProject"
ng-options="c.value as c.name for c in selectItems")
与
select(ng-model="chosenProject.value" id="chosenProject"
ng-options="c.value as c.name for c in selectItems")
然后应正确捕获所选项目。
关于javascript - 引导 Angular 模态对话框:无法从select返回值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22685503/