通过angular更新DOM后的调用函数

时间:2014-05-30 13:51:04

标签: javascript angularjs ace-editor

我有一个切换变量显示搜索面板的函数,当面板可见时,我需要调用resize函数来刷新ACE编辑器(面板制作编辑器更小)。

在html中我有:

<div class="search-panel" ng-show="searchReplace">
    <button type="button" ng-click="search(false)" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <form name="searchForm">
        ...

我的搜索功能如下:

var prev_search;
$scope.search = function(toggle, replace) {
    var refresh = $scope.searchReplace != toggle;
    if (toggle) {
        if ($scope.searchReplace) {
            // next search
            if ($scope.selectedSearchText != prev_search) {
                // new search
            } else {
                // continue
            }
        } else {
            $scope.searchReplace = true;
            $scope.replaceMode = !!replace;
        }
    } else {
        $scope.searchReplace = false;
    }
    if (refresh) {
        editor.resize();
    }
};

我在keydown事件中调用该函数:

$(document.documentElement || window).keydown(function(e) {
    if (e.ctrlKey) {
        if (e.which == 82) { // CTRL+R
            $scope.$apply(function() {
                $scope.search(true, true);
            });
        } else if (e.which == 81) { // CTRL+Q to test resize - it's working
            editor.resize();
        } else if (e.which == 70) { // CTRL+F
            $scope.$apply(function() {
                $scope.search(true);
            });
            e.preventDefault();
        }
    }
});

1 个答案:

答案 0 :(得分:0)

我最终使用了jQuery show / hide并在之后调用了resize。