【问题标题】:Bootstrap-UI - How to use TemplateUrl for a tab view without manipulating the URL?Bootstrap-UI - 如何在不操作 URL 的情况下将 TemplateUrl 用于选项卡视图?
【发布时间】:2017-03-08 22:35:06
【问题描述】:

我正在处理一些Bootstrap-UI tabs,但我无法在线找到使用templateURL 的实例,而无需操作页面的URL。这是我想做的:

HTML

<uib-tabset active="active">
    <uib-tab ng-repeat="tab in model.tabs" index="$index" heading="{{tab.title}}">
        {{tab.content}}
    </uib-tab>
</uib-tabset>

JS

model.jo = {...} // a gigantic JSON object - needs to be available in the templates.
model.tabs = [
    {
        title: "Visualized",
        content: url('vis.html')
    },
    {
        title: "Pure JSON",
        content: url('json.html')
    }
]

我在网上找到的大部分内容都使用$routeProvider$locationProvider 修改URL 以显示不同的选项卡,例如:http://embed.plnkr.co/TMN3KNlS4Dv90SvbTQKJ/。我不想那样做。

有什么方法可以像定义组件一样定义templateUrl

另外,我在 html 页面中需要我的 JSON 对象 model.jo

【问题讨论】:

    标签: javascript angularjs angular-ui-bootstrap angularjs-ng-include


    【解决方案1】:

    您可以使用ng-include 通过其模板 URL 来呈现模板。您唯一需要在 tabs 对象中更改的是,使用 templateUrl 而不是 content 属性。

    <uib-tabset active="active">
        <uib-tab ng-repeat="tab in model.tabs" index="$index" heading="{{tab.title}}">
            <div ng-include="tab.templateUrl"></div>
        </uib-tab>
    </uib-tabset>
    

    tabs对象更改为

    model.tabs = [
        {
            title: "Visualized",
            templateUrl: 'vis.html'
        },
        {
            title: "Pure JSON",
            templateUrl: 'json.html'
        }
    ]
    

    此外,ng-include 使用与源相同的控制器,因此您将能够在这两个页面中访问模型,特别是 model.jo。来源:Pass parameter to Angular ng-include

    【讨论】:

    • 酷,我如何将我的数据发送到这些文件?我有一个大的 JSON 对象需要可用。
    • 好的,发现 ng-include 使用相同的控制器。来源:stackoverflow.com/questions/25565475/… 另外,我测试了它,它可以工作。
    • 谢谢,最初不适用于我:
      ,但可以使用:
      。注意第一个中缺少的单引号。也许这条评论对某人有帮助。
    猜你喜欢
    • 2013-04-24
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多