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

Angular - Conditionally setting ng-href through function

我有一个 angular 控制器,我想根据函数的结果有条件地设置链接

<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;
    }
}]);

如果我像这样硬核 url,我可以让它工作

<a ng-href="{{ page == home ? 'views/contact.html' : 'contact.html' }}"

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

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

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

编辑以下评论:

您还缺少 <a> 标签上的右括号,这可能是导致问题的原因。不确定这是错字还是代码中的问题。将其更改为:

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

它应该是这样的

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>