我有一个带有以下模板(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/

10-13 06:34