如何强制我的$ modal窗口在主范围上创建对象

时间:2015-09-28 11:03:38

标签: javascript angularjs twitter-bootstrap

我有一个主页面,我在按钮点击时打开一个模态窗口。新模态窗口的分配范围与主控制器相同。我的意思是我像这样创造它:

app.module.....{

$scope.modalInstance = null;
$scope.myNumber = null;
$scope.openModal = function(){
    modalInstance = $modal.open({
        templateUrl: 'template/modal/Modal.html',
        size: size,
        windowClass: 'small-size-modal',
        scope: $scope
    });
};    

模态窗口显示的所有数据都取自控制器的范围,一切正常。现在还有一个文本框输入来捕获用户的数字。我希望这个数字直接在控制器范围本身上创建,这样我就可以从控制器中访问它。

$scope.submitNumberFromModal = function(){
$scope.doSomething($scope.myNumber);
};

我的模态html输入元素是这样的:

<div class="modal-content">
<input type="text" class="input-box" size="10" ng-model="myNumber"/>

但我发现myNumber是在一个我不知道如何访问的单独范围上创建的。任何帮助都是值得欣赏的。

1 个答案:

答案 0 :(得分:0)

$modal.open创建一个以$scope为父级的新范围。新范围原型继承自父级,这意味着来自父控制器范围的任何对象(在this的情况下包括controllerAs)都可用于绑定值并在父级中使用它和模态范围。

所以它会是

$scope.data = {};
父控制器中的

<input type="text" class="input-box" size="10" ng-model="data.myNumber"/>

in modal。

  

但我发现myNumber是在一个单独的范围内创建的   不知道怎么访问。

可以使用modal's own controller访问它,可以使用任何类型的控制器交互(例如events)使其与父控制器通信。