我怎么能强迫我的$modal窗口在主作用域上创建对象

How can I force my $modal window to create objects on the main scope

本文关键字:作用域 创建对象 窗口 modal 怎么能 我的      更新时间:2023-09-26

我有一个主页,我打开一个模态窗口的按钮单击。新的模态窗口被赋予与主控制器相同的作用域。我的意思是我这样创建它:

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);
};

我的Modal html输入元素是这样的:

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

但是我看到myNumber是在一个单独的作用域中创建的,我不知道如何访问。如有任何帮助,不胜感激

$modal.open创建一个新的作用域,$scope作为父作用域。新的作用域原型继承自parent,这意味着任何来自parent控制器作用域的对象(包括controllerAs中的this)都可以用来绑定该值,并在parent和modal作用域中使用它。

所以应该是

$scope.data = {};

在父控制器中,和

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

但是我看到myNumber是在一个单独的作用域中创建的不知道如何访问。

它可以被modal自己的控制器访问,任何类型的控制器交互(例如事件)都可以用来使它与父控制器对话