Angular.js - 根据视图显示链接

时间:2015-10-18 09:53:36

标签: javascript angularjs

我想在应用视图的标题中找到返回目标网页的链接,但显然不在目标网页上。我如何在Angular.js中以最佳方式实现它?

我应该使用$ location.url()来确定视图,还是应该使用bind-html或其他东西?

感谢您提供一些提示和帮助!

修改

我当前的代码,我想我已经让它变得更容易了,因为每个视图都有自己的控制器,但是链接始终显示:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css">
<style>
</style>
</head>
<body ng-app="myApp">

<div data-role="page" id="pageone">
  <div data-role="header">
    <h1>WELCOME!</h1>
    <a href="home" ng-show="!isLandingPage">BACK TO HOME</a>
  </div>

<div ng-view></div>
    <div data-role="footer">
    <h1>footer</h1>
  </div>
</div>

<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="http://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src= "http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.14/angular-route.min.js"></script>
<script>
'use strict';

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

app.config(function($routeProvider, $locationProvider) {
   $locationProvider.html5Mode(true);
   $locationProvider.hashPrefix('!');

    $routeProvider
         .when('/', {
          templateUrl : 'views/home.html',
          controller  : 'HomeController'
        })
        .when('/other', {
          templateUrl : 'views/other.html',
          controller  : 'OtherController'
        });
});

app.controller('HomeController', function($scope, $http, $location,  $route) {

$scope.isLandingPage = true;

});

app.controller('OtherController', function($scope, $route) {
    $scope.info = 'Other';
});

</script>

</body>
</html>

2 个答案:

答案 0 :(得分:1)

始终显示链接,因为您的div所在的div没有连接任何控制器。

你可以这样做:

app.controller('landingPageCtrl', ['$scope', '$location', function($scope, $location){
      $scope.isLandingPage =  function(){
          return ($location.url() == '/home') ? true : false;
      }
}]);

然后使用 ng-show 隐藏或显示链接,具体取决于位置

<div ng-controller="landingPageCtrl" data-role="header">
    <h1>WELCOME!</h1>
    <a href="home" ng-show="!isLandingPage()">BACK TO HOME</a>
</div>

答案 1 :(得分:0)

我喜欢检查我的路线(或ui.router中的状态)。

$scope.isLandingPage = $state.current.name === 'home';

并使用<a ng-show="!isLandingPage">Link</a>