我希望这个问题不会让我头疼,但是因为我这个(把手指紧紧地握在一起)远远没有打我自己在头脑中,我想我会继续前进,吞下我的骄傲,无论如何都要问。
作为一个自我承认的Angular新手,当访问者调用该页面的特定部分时,我有一个问题隐藏我的索引文件(这是我的布局页面)上的div。
我有大约55个部分(范围蔓延是一个很棒的事情),并且违规的div不应该出现在其中的12个。
这是我的标记:
<div ng-show="somename" id="somename" ng-controller="somenameCtrl">
<div ng-include="'templates/somename.html'"></div>
</div>
这是我的控制器:
app.controller('somenameCtrl', function($scope, $route, $location) {
$scope.$on('$routeChangeSuccess', function() {
var path = $location.path();
console.log(path);
$scope.somename = true;
if (path === '/thatpage') {
$scope.somename = true;
} else if (path === '/thispage') {
$scope.somename = false;
}
});
});
我认为这将是最简单的前进方式,但现在我不太相信(如前所述)我有几个部分隐藏了索引文件中的div。显然,div没有显示在“这个页面”上,并且正在“该页面上正确显示”。 (以及除此之外的任何部分&#39;此页面被称为。
但是,我不需要在页面上显示div&#39; thispage2&#39; - &GT; &#39; thispage12&#39;并将其显示在其他所有内容上。关于如何实现这个目标的任何想法?
感谢任何帮助 - 如果有任何不清楚的地方,请告诉我,我会尽力提供更清晰的信息。
答案 0 :(得分:2)
在Angular中有很多方法可以做到这一点。太多了。
我假设你使用ui-router或ng-router。两个路由器都有resolve
方法。在您定义的每个路由/状态中,您可以传递SomeName
变量,如下所示:
.when('/someRoute', {
templateUrl: '...',
controller: '...',
resolve: {
SomeName: false;
}
})
然后将其包含在您的控制器中:
.controller(function(SomeName, $scope) {
$scope.somename = SomeName || false;
}
这样,您只需要在{true} 的路线中定义SomeName
变量。未定义时默认为false,因此您不需要在每条路径上定义它
当然,还有其他方法可以做到这一点,但在我看来,这似乎是最干净的方法