bootstrap-angular模式对话框:无法从select返回值

时间:2014-03-27 10:57:00

标签: javascript angularjs twitter-bootstrap angular-ui-bootstrap

我有一个带有以下模板(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()函数,下面是来自控制器主体的excepmt:

        $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;”行中预设的内容。我很感激如何解决这个问题。

2 个答案:

答案 0 :(得分:2)

由于控制器和模态模板之间存在转换范围,因此出现此问题。

试试这个 - 在模态的控制器中,替换:

$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")

然后应正确捕获所选项目。

答案 1 :(得分:0)

您需要将selectedProject传回

modalInstance.result.then(function(result) {
});
如果您需要在一个页面中添加更多对话框,

This是一个非常好的简单对话框服务。