手动更改网址时,data-ng-class条件无效

时间:2016-07-22 12:38:44

标签: angularjs url controller ng-class route-provider

我在data-ng-class上对div做了一个条件语句,我想以某种方式将这个范围添加到控制器中,并指定何时url是/ vegetarian来应用class' egg'我手动更改网址我想要课程'培根'应用,但它不工作,我出错了?

HTML:

<div data-ng-class="{'egg': isVeggie, 'bacon': !isVeggie }">
  Text here
</div>

控制器:

app.controller('foodCtrl', function ($scope, $location) {

  $scope.location = $location;
  $scope.isVeggie = false;


  $scope.isVeggie = function() {
    if(isVeggie === $location.path('/vegetarian')) {
      return true;
    }
  }

});

这不起作用。当我打字/素食时,正在使用类蛋,但是当我将网址更改为/早餐之类的其他内容时,课堂上的蛋#遗迹。我怎样才能做到这一点? 感谢

2 个答案:

答案 0 :(得分:1)

为什么属性和函数具有相同的名称?毕竟你只有函数

$scope.isVeggie = false;

$scope.isVeggie = function() {
    if(isVeggie === $location.path('/vegetarian')) {
       return true;
    }
}

将您的代码更改为仅具有该功能。

<强>仅

$scope.isVeggie = function() {
        if(isVeggie === $location.path('/vegetarian')) {
           return true;
        }
    }

和标记

<div data-ng-class="{'egg': isVeggie(), 'bacon': !isVeggie() }">
  Text here
</div>

答案 1 :(得分:0)

您将ng-class指令绑定到属性isVeggie而不是函数isVeggie()。

将您的HTML更改为:

public void addHiredRoomToLayout(Room room) {
    textView = new TextView(this);
    textView.setText(room.getParameters());
    linearLayout.addView(textView);
}

然后,您可以删除控制器中的以下行:

<div data-ng-class="{'egg': isVeggie(), 'bacon': !isVeggie() }">
  Text here
</div>