0

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

<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?

4

2 回答 2

3

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

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

编辑以下评论:

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

<a ng-href=" {{  setLink('contact') }}">Link Text<a/>
于 2016-02-15T05:50:34.780 回答
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>

于 2016-02-15T06:21:20.350 回答