【发布时间】:2014-07-31 15:08:25
【问题描述】:
我知道ng-view 更适合这种类型的问题,但我已经使用它来动态加载auth 与dashboard 模板,所以我无法使用ng-includes。
基本上,一旦我用ng-view 加载dashboard 模板,我就有一个选项卡控件,它应该根据哪个选项卡处于活动状态来更改ng-include。但是,我一生无法弄清楚如何根据选择的选项卡更改 ng-include。作为一个仅供参考,Angular 的超级新手,主要是 JQuery 人,(是的,我知道我应该避免使用带有 Angular 的 JQuery,以便我可以掌握 Angular,但我对这件事束手无策) .
这是我的标签控件:
myApp.controller('TabsCtrl', ['$scope', function ($scope) {
$scope.tabs = [{
url: '#/dashboard/one'
}, {
url: '#/dashboard/two'
}
}];
$scope.activeTab = '#/dashboard/one';
$scope.onClickTab = function(tab) {
$scope.activeTab = tab.url;
}
$scope.isActiveTab = function(tabUrl) {
return tabUrl == $scope.activeTab;
}
$scope.dashboard.url = {};
if($scope.activeTab === '#/dashboard/one') {
$('ng-include').attr('src', 'dashboard/one.html');
}
if($scope.activeTab === '#/dashboard/two') {
$('ng-include').attr('src', 'dashboard/two.html');
}
}]);
这是 html:
<div id="wrapper" ng-controller="TabsCtrl">
<div id="sidebar-wrapper">
<ul class="sidebar-nav">
<li ng-repeat="tab in tabs"
ng-class="{active_tab:isActiveTab(tab.url)}"
ng-click="onClickTab(tab)">
<a href="{{tab.url}}">
<div class="tab-icon">
<i ng-class="tab.icon"></i>
</div>
<div class="tab-label">{{tab.label}}</div>
</a>
</li>
</ul>
</div>
<div id="page-content-wrapper">
<div class="page-content">
<ng-include src=""></ng-include>
</div>
</div>
</div>
@hasH:我试图按照这些思路做一些事情,但$scope.dashboardPath.url 似乎并不是真正的src="dashboardPath.url"。
var path = currentPath;//Retrieve it.
$scope.dashboardPath={};
if(path==='/dashboard/one')
$scope.dashboardPath.url='pageOne.html';
if(path==='/dashboard/two')
$scope.dashboardPath.url='pageTwo.html';
【问题讨论】:
-
那么,我想你无法正确初始化?
-
哈哈哈,是的……遇到问题了。欢迎回来帮助 Angular 新手。我无法正确初始化它,我认为是因为
ng-include创建了一个新范围,所以我无法弄清楚初始化它的代码应该去哪里。我尝试将其放入TabCtrl,但无法弄清楚如何访问src属性。 -
让我再试一次。至于解决问题。这就是 SO 的用途。
标签: javascript jquery angularjs angularjs-ng-include