Angular - 通过函数有条件地设置ng-href

时间:2016-02-15 05:46:19

标签: javascript angularjs angularjs-ng-href

我有一个角度控制器,我想根据功能的结果有条件地设置链接

<a ng-href=" {{  setLink('contact') }}"

在控制器中

angular.module("my-app")
    .controller('navController', ['$scope', '$document', function($scope, $document) {
    $scope.page = $document[0].title;
    $scope.home = "My app";

    $scope.setLink = function(path) {
        return $scope.page == $scope.home ? 'views/' + path : path;
    }
}]);

如果我像这样强调网址

,我可以让它发挥作用
<a ng-href="{{ page == home ? 'views/contact.html' : 'contact.html' }}"

有谁知道如何将函数传递给ng-href?

2 个答案:

答案 0 :(得分:3)

您的$ scope.setLink函数当前不接受任何参数,因此它不会返回您传递给它的值。重新定义函数以接受参数。

$scope.setLink = function(path) {
    return $scope.page == $scope.home ? 'views/' + path : path;
}

修改以下评论:

您还错过了<a>标记上的结束括号,这可能会导致问题。不确定这是否是代码中的拼写错误或问题。将其更改为:

<a ng-href=" {{  setLink('contact') }}">Link Text<a/>

答案 1 :(得分:1)

这是它应该如何运作

angular.module("myApp", [])
.controller('mController', ['$scope', '$document', function($scope, $document) {
    $scope.page = $document[0].title;
    $scope.home = "My app";
    $scope.setLink = function(path) {
      url = $scope.page == $scope.home ? 'views/' + path : path;
      return url;
    };
  }]);
<script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.9/angular.js" data-semver="1.4.9"></script>
    
<div ng-app="myApp" ng-controller="mController">
  <a ng-href="{{setLink('contact')}}">{{setLink('contact')}}</a>
</div>