【问题标题】:access scope inside windowTemplateUrl in angular以角度访问窗口 TemplateUrl 内的范围
【发布时间】:2014-12-30 09:06:11
【问题描述】:

我的模态窗口有一个 windowTemplateUrl,如下所示

<div tabindex="-1" role="dialog" class="modal fade" ng-class="{in: animate}" ng-style="{'z-index': 1050 + index*10, display: 'block'}" data-ng-click="close($event)">
    <div class="modal-dialog" ng-class="{'modal-sm': size == 'sm', 'modal-lg': size == 'lg'}">
        <div class="modal-content square-btn">
            <div class="modal-header custom-modal-header square-btn">
                <button type="button" class="close" data-dismiss="modal" ng-click="cancel($event)">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Close</span>
                </button>
                <h3 class="modal-title">{{modalTitle}}--</h3>
            </div>
            <div class="modal-body" modal-transclude>

            </div>            
        </div>
    </div>
</div>

我的js代码如下

$modal.open({
            windowTemplateUrl: 'templates/common/modal.html',            
            templateUrl: 'templates/jobs/create-job-modal.html',
            resolve: {
                modalTitle: function(){
                    return 'Create new position';
                }
            },
            controller: ['$scope', 'modalTitle', function( $scope, modalTitle ) {
                $scope.modalTitle = modalTitle;
            }]
        });

但似乎无法从modal.html 模板访问我的范围。但我可以从create-job-modal.html 模板访问它。我需要它在 modal.html 中。

我怎样才能做到这一点。提前致谢

【问题讨论】:

  • 尝试在你想要的控制器的html中手动设置ng-controller
  • 现在我正在使用 $rootScope 并为模态标题部分分配一个控制器。但我认为有更好、更直接的方法来做到这一点。
  • 尝试对模态使用单独的控制器并将其附加到顶部的div

标签: javascript angularjs angular-ui-bootstrap


【解决方案1】:

这有点违反直觉,但控制器的范围实际上是 windowTemplate 的父范围。
因此,您可以通过在 windowTemplate 中执行 $parent.modalTitle 来访问 modalTitle。

【讨论】:

    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 2012-11-29
    • 1970-01-01
    • 2017-05-30
    相关资源
    最近更新 更多