javascript - 如何使用按钮执行 ng-include ?

标签 javascript html angularjs view

当我单击按钮时,我在尝试执行 ng-include 时遇到问题。这是我的代码:

Main.html:

<div class="main">
    <div ng-include="(manage.show && 'dsManage.html') || dsSelect.html"></div>
    <h1>Data Sources</h1>
    <div ng-controller="MainCtrl" >
        <div ng-show="reportManage && (reportManage.canManage || reportManage.canManageAll)">
            <div class="row searchRow">
                <span class="col-sm-6" style="padding-left: 0px;">
                    <span class="input-group">
                        <input type="text" class="form-control searchInput" placeholder="Search" ng-model="search">
                        <span class="input-group-addon"><img ng-if="search" src="../images/Search_clear.png" ng-click="clearSearch()"/></span>
                    </span>
                </span>
                <div class="col-sm-2 col-sm-offset-4 text-right">
                    <a ng-show="tileLayout" class="btn-list-view" ng-click="tileLayout=false">List View</a>
                    <a ng-show="!tileLayout" class="btn-tile-view" ng-click="tileLayout=true">Tile View</a>
                </div>
            </div>
            <div class="text-left">
                <button ng-click="showDatasources()">All/Default</button>
                <button ng-click="showManagePage()">Manage</button>
                <!--<a href="{{dsSelectAllDefault}}" id="btn-default-all"></a>-->
            </div>
        </div>
    </div>
</div>

Main.js:

$scope.showManagePage = function() {
    console.log("True");
    $scope.manage.show = true;
}

基本上我想要的是,当我单击Manage按钮时,showManagePage()将触发并导致ng-include在代码最顶部触发并显示dsManage.html。这将用 dsManage.html 替换现有 View dsSelect.html。然而,每当我按下这个按钮时,什么也没有发生。问题是这些页面位于我的根目录中,当我将 ./ 前缀添加到我的文件中时,我的页面似乎崩溃了。谁能帮我吗?谢谢!

编辑:更新了 Main.html 文件:

<div class="main">
    <div ng-controller="MainCtrl" >
        <div ng-show="manage.show" ng-include="'dsManage.html'"></div>
        <div ng-show="!manage.show">
            <h1>Data Sources</h1>
            <div ng-show="reportManage && (reportManage.canManage || reportManage.canManageAll)">
                <div class="row searchRow">
                    <span class="col-sm-6" style="padding-left: 0px;">
                        <span class="input-group">
                            <input type="text" class="form-control searchInput" placeholder="Search" ng-model="search">
                            <span class="input-group-addon"><img ng-if="search" src="../images/Search_clear.png" ng-click="clearSearch()"/></span>
                        </span>
                    </span>
                    <div class="col-sm-2 col-sm-offset-4 text-right">
                        <a ng-show="tileLayout" class="btn-list-view" ng-click="tileLayout=false">List View</a>
                        <a ng-show="!tileLayout" class="btn-tile-view" ng-click="tileLayout=true">Tile View</a>
                    </div>
                </div>
                <div class="text-left">
                    <button ng-click="showDatasources()">All/Default</button>
                    <button ng-click="showManagePage()">Manage</button>
                    <!--<a href="{{dsSelectAllDefault}}" id="btn-default-all"></a>-->
                </div>
                </div>
            </div>
        </div>
    </div>
</div>

我现在遇到一个问题,提示警告:尝试多次加载 Angular 。并且我注意到只有在执行ng-include时才会出现此错误。关于如何解决这个问题有什么想法吗?

最佳答案

我相信您的manage.show超出了 Controller MainCtrl的范围。 尝试在 Controller DIV 内使用 ng-include 移动 DIV。或者将 Controller 声明移动到类 main 的 div 中。

关于javascript - 如何使用按钮执行 ng-include ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33637602/

相关文章:

javascript - 所选选项值的 jquery 验证警报

javascript - 给脚本添加隐藏参数

javascript - 如果选择在标签内,如何获取格式化文本

javascript - 谷歌将圆圈映射到折线坐标数组

javascript - 使用javascript更改表单内表单中输入文本的值

javascript - 如何解决待办事项列表 Web 应用程序中的错误

html - CLASSLESS 元素的 Jsoup 选择器符号?

javascript - 如何获取 Javascript 数组中某个对象之前的最后 N 个对象?

javascript - 分页仅在第一页显示我的所有项目

javascript - Kendo UI Scheduler 在 parameterMap AngularJS 中不可用