gpt4 book ai didi

javascript - 在 Angular Tabs 中从页面中的不同位置调用内容

转载 作者:行者123 更新时间:2023-11-28 01:25:20 27 4
gpt4 key购买 nike

我有一组标签。我想知道如何在单击选项卡时从页面的不同部分获取内容。我可以通过调用不同的 html 页面来实现,但是有没有办法显示同一页面的内容?

   <tabset vertical="false">
<tab heading="Scenario 1">Test</tab>
<tab heading="Scenario 2"></tab>
<tab heading="Dist as of 12/31/15"></tab>
<tab heading="Custom Label"></tab>
</tabset>

例如,我如何让场景 1 的内容显示在场景一的选项卡中。我知道我可以把所有东西都放在选项卡标记之间,但是还有另一种方法吗?

.js页面

(function () {
'use strict'

var DistributionApp = angular.module('DistributionApp',
['someApp', 'ctracApp.engagement.services', 'ngRoute']);

DistributionApp.config(['$routeProvider', function ($routeProvider) {
$routeProvider.when('/Distribution',
{
templateUrl: '/app/Something/Distribution/Distribution.html',
controller: 'distributionCtrl',
controllerAs: 'minimumDist'
});
}]);


DistributionApp.controller('distributionCtrl', ['$location', '$sce', function ($location, $sce) {
var self = this;
$scope.setActive = function(current){
$scope.active = current;
};

$scope.amIActive(id)
{
if ($scope.active == id)
{
return true;
}
else
{
return false;
}
};

}]);
});

最佳答案

使用路线提供者

通过这种方法,您将使用 Angular 模块应用程序,注入(inject) ngRoute所以你可以操纵请求。在您的 index.html 文件中,您可以使用 ng-view 更改您的 div id ,因此您可以使用 ngRoute 更改 ng-view 的代码。

在您的 Tabset 上,我添加了一些指向 scenario/:id 的链接,因此我可以动态地使用 ID 在 $routeProvider 中找到相应的 html。

index.html

<html ng-app='app'>
<body>
<tabset vertical="false" ng-controller='tabController'>
<tab a href='#/scenario/1' heading="Scenario 1" ></tab>
<tab a href='#/scenario/2' heading="Scenario 2"></tab>
<tab a href='#/scenario/3' heading="Dist as of 12/31/15"></tab>
<tab a href='#/scenario/4' heading="Custom Label"></tab>
</tabset>

<div ng-view>
</div>

</body>
<script src="angular.js">
<script src="angular-route.js">
<script src='app.js'>
</html>

场景1.html

<div>
This is scenario 01
</div>

应用程序.js

var app = angular.module('app', [ngRoute]);

app.controller('tabController', function(){});

app.config( function($routeProvider) {
$routeProvider
.when('/scenario/:ID',
{
controller: 'tabController',
templateUrl: function($routeParams) {
return 'scenario' + routeParams.ID + '.html' }
})
.otherwise( { template: '<div> Ohh, 404! :D </div> });
});

templateUrl 将 Bootstrap 文件路径,而模板将直接显示 HTML。 templareUrl 可以接收路径或返回路径的函数。在这种情况下,我需要访问 :ID,这是一个路由参数,因此我需要注入(inject) $routeParams 依赖项才能访问它。

.otherwise 方法将 Bootstrap 至默认的 404 页面。

隐藏和显示同一页面的内容

首先,所有内容都在同一页面上。我正在使用 ng-if , 但我可以使用 ng-showng-hide也。有了这三者,我们就可以根据作用域变量或作用域函数来显示或隐藏内容。在 something.html 中,我在选项卡上调用一个函数来设置事件选项卡,在其下方,我拥有所有仅当相应选项卡处于事件状态时才会显示的 div。

something.html

    <tabset vertical="false" ng-controller='tabController'>
<tab ng-click='setActive(1)' heading="Scenario 1" ></tab>
<tab ng-click='setActive(2)' heading="Scenario 2"></tab>
<tab ng-click='setActive(3)' heading="Dist as of 12/31/15"></tab>
<tab ng-click='setActive(4)' heading="Custom Label"></tab>
</tabset>

<div ng-if='amIActive(1)' id='Scenario1'>
This is test content 1
</div>

<div ng-if='amIActive(2)' id='Scenario2'>
This is test content 2
</div>

<div ng-if='amIActive(3)' id='Scenario3'>
This is test content 3
</div>

<div ng-if='amIActive(4)' id='Scenario4'>
This is test content 4
</div>

应用程序.js

app.controller('tabController', function(){
$scope.setActive = function(current){
$scope.active = current;
};

$scope.amIActive = function(id) {
if($scope.active == id){
return true;
} else { return false; }
};
});

关于javascript - 在 Angular Tabs 中从页面中的不同位置调用内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32380931/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com