【问题标题】:bootstrap-angular modal dialog: can not return value from selectbootstrap-angular 模态对话框:无法从选择中返回值
【发布时间】:2014-03-27 10:56:59
【问题描述】:

我有一个带有以下模板(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;”行中预设的任何内容。感谢您提出如何解决此问题的建议。

【问题讨论】:

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


    【解决方案1】:

    由于您的控制器和模态模板之间存在嵌入范围而出现此问题。

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

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

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

    【讨论】:

      【解决方案2】:

      你需要把 selectedProject 传回去

      modalInstance.result.then(function(result) {
      });
      

      This 是一个非常好的更简单的对话服务,如果您需要在一个页面中添加更多对话。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-27
        相关资源
        最近更新 更多