0

我对 Angular 很陌生,我有点被一个问题困住了。我有一个显示项目的 ng-repeat。在项目中,我有一个“显示更多信息”按钮,当您单击它时,应该会导致新视图替换当前视图(包括显示更多信息按钮)。然后,新视图将有一个“返回”按钮,该按钮将切换回原始状态。

不幸的是,我似乎无法弄清楚如何让它发挥作用。

这是我所得到的...

<article ng-repeat="item in items" class="items">
  <div ng-switch on="view">
    <div ng-switch-default>
      <p>Default State for {{item}}</p>
      <div class="btn">More Info
    </div>
    <div ng-switch-when="info">
      <p>Info for {{item}}</p>
      <div class="btn">Go back</div>
    </div>
  </div>
</article>

如果有人可以在这里帮助我,我将不胜感激。谢谢你。

4

2 回答 2

3

您可以设置view单击按钮时的值。我建议您使用item.view而不是view,它会阻止其他元素的视图被切换。

<article ng-repeat="item in items" class="items">
    <div ng-init="viewDefaultValue = item.view;" ng-switch on="item.view">
        <div ng-switch-default>
            <p>Default State for {{item}}</p>
            <div class="btn" ng-click="item.view = 'info';">More Info</div>
        </div>
        <div ng-switch-when="info">
            <p>Info for {{item}}</p>
            <div class="btn" ng-click="item.view = viewDefaultValue;">Go back</div>
        </div>
    </div>
</article>

这是一个工作示例。

(function() {
  angular
    .module('myApp', [])
    .controller('myController', function($scope) {
      $scope.items = [{
        view: '',
        text: 'item1'
      }, {
        view: '',
        text: 'item2'

      }]
    });
})();
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myController">

  <div ng-repeat="item in items" class="items">
    <div ng-init="viewDefaultValue = item.view;" ng-switch on="item.view">
      <div ng-switch-default>
        <p>Default State for {{item.text}}</p>
        <div class="btn" ng-click="item.view = 'info';">More Info
        </div>
      </div>
      <div ng-switch-when="info">
        <p>Info for {{item.text}}</p>
        <div class="btn" ng-click="item.view = viewDefaultValue;">Go back</div>
      </div>
    </div>
  </div>

于 2015-09-10T06:21:01.570 回答
1

使用ng-hideandng-show而不是ng-switch

<article ng-repeat="item in items" class="items">
  <div ng-show="isviewvisible">
    <div>
      <p>Default State for {{item}}</p>
      <div class="btn" ng-click="more()">More Info
    </div>
    <div ng-hide="isviewvisible">
      <p>Info for {{item}}</p>
      <div class="btn" ng-click="goBack()">Go back</div>
    </div>
  </div>
</article>

现在在 angularjs

$scope.isviewvisible = true;

$scope.more = function(){
  $scope.isviewvisible = false;
}

$scope.goBack = function(){
  $scope.isviewvisible = true;
}

当您单击时more(),它将隐藏视图并显示更多信息

当您单击时goBack(),它将隐藏更多信息并显示视图

于 2015-09-10T06:17:37.520 回答