AngularJS函数未返回所需的值

时间:2017-06-24 10:47:43

标签: javascript angularjs function

我有一个函数来确定是否应该在页面上显示标题。角度控制器如下:

angular.module('blahblah').controller('blahblahController', [
    '$location',
    function blahblahController($location) {
        'use strict';

        this.shouldShow = function () {
            return $location.url() !== '/homepage';
        };
    }
]);

像这样,除了主页之外,该函数将在每个页面中评估为true,因此ng-if="$ctrl.shouldShow()"将在页面上显示该元素。

我的问题是我希望在除主页和'/error'页面之外的每个页面中评估为true的函数。

我尝试将'/homepage'替换为'/homepage' || '/error',并将其置于括号之间,但它不起作用。

帮助将不胜感激!

3 个答案:

答案 0 :(得分:1)

this.shouldShow = function () {
 return !($location.url() === '/homepage' || $location.url() === '/error');
};

检查网址是否等于主页或错误并取消它。对于除主页和错误页面之外的所有页面,这将返回true。

答案 1 :(得分:-1)

您需要进行两次比较:

this.shouldShow = function () {
   let path = $location.path();
   return path !== '/homepage' || path !== '/error';
};

答案 2 :(得分:-1)

Angular控制器需要注入$ scope,以便将任何属性附加到$ scope对象。在控制器中,您希望模板中可用的任何属性都需要以$ scope作为前缀。 例如

$scope.shouldShow = function () {
        return $location.url() !== '/homepage';
};

在您的模板中,您将使用:ng-if=shouldShow()

有关详细信息,请参阅https://docs.angularjs.org/guide/controller

您在模板中使用ng-if="$ctrl.shouldShow()"。 AngularJS组件默认controllerAs使用$ ctrl。有关详细信息,请参阅https://docs.angularjs.org/guide/component