anglejs – Angular.js ng切换 – 当不使用动态数据时?

前端之家收集整理的这篇文章主要介绍了anglejs – Angular.js ng切换 – 当不使用动态数据时?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图让Angular根据我的数据生成一个CSS滑块。我知道数据在那里,并且能够为按钮生成数据,但由于某些原因,代码将不会填充ng开关。当我检查代码,我看到这两次(我知道是正确的,因为我只有两个项目):
<div ng-repeat="assignment in assignments" ng-animate="'animate'" class="ng-scope">
    <!-- ngSwitchWhen: {{assignment.id}} -->
</div>

我的实际代码

<div ng-init="thisAssignment='one'">
     <div class="btn-group assignments" style="display: block; text-align: center; margin-bottom: 10px">
         <span ng-repeat="assignment in assignments">
              <button ng-click="thisAssignment = '{{assignment.id}}'" class="btn btn-primary">{{assignment.num}}</button>
         </span>
     </div>

     <div class="well" style="height: 170px;">
         <div ng-switch="thisAssignment">
              <div class="assignments">
                   <div ng-repeat="assignment in assignments" ng-animate="'animate'">
                        <div ng-switch-when='{{assignment.id}}' class="my-switch-animation">
                        <h2>{{assignment.name}}</h2>
                        <p>{{assignment.text}}</p>
                   </div>
              </div>
         </div>  
    </div>  
</div>

编辑:这是我试图仿效的动态数据。 http://plnkr.co/edit/WUCyCN68tDR1YzNnCWyS?p=preview

docs

Be aware that the attribute values to match against cannot be expressions. They are
interpreted as literal string values to match against. For example,ng-switch-when=”someVal”
will match against the string “someVal” not against the value of the expression
$scope.someVal.

所以换句话说,ng-switch是用于模板中的硬编码条件。

你会这样使用它:

<div class="assignments">
  <div ng-repeat="assignment in assignments" ng-animate="'animate'">
    <div ng-switch="assignment.id">
      <div ng-switch-when='1' class="my-switch-animation">
      <h2>{{assignment.name}}</h2>
      <p>{{assignment.text}}</p>
    </div>
  </div>
</div>

现在这可能并不适合你的用例,所以有可能你需要重新思考你的策略。

Ng-If可能是您需要的 – 同样,您需要注意“isolated” scopes.基本上,当您使用某些指令(如ng-repeat)时,您将创建与父母隔离的新范围。所以如果你改变这个转发中断器,你实际上改变了特定重复块内的变量,而不是整个控制器。

这是一个demo你要做什么。

注意我将选定的属性分配给事物数组(它只是一个对象)。

更新12/12/14:添加新的代码块以阐明ng-switch的使用。上面的代码示例应该被考虑在做什么。

正如我在评论中提到的。开关应该是像JavaScript开关一样。这是用于硬编码的开关逻辑。所以例如在我的示例帖子中,只会有几种类型的帖子。你应该知道一段时间内你要打开的值的类型。

<div ng-repeat="post in posts">
  <div ng-switch on="post.type">

    <!-- post.type === 'image' -->
    <div ng-switch-when="image" class="post post-image">
      <img ng-src="{{ post.image }} />
      <div ng-bind="post.content"></div>
    </div>

    <!-- post.type === 'video' -->
    <div ng-switch-when="video" class="post post-video">
      <video ng-src="{{ post.video }} />
      <div ng-bind="post.content"></div>
    </div>

    <!-- when above doesn't match -->
    <div ng-switch-default class="post">
      <div ng-bind="post.content"></div>
    </div>
  </div>
</div>

您可以使用ng-if来实现相同的功能,您的工作是确定应用程序中有意义的内容。在这种情况下,后者更简洁,但也更复杂,如果模板更复杂,您可以看到它变得更加毛茸茸。基本的区别是ng-switch是声明式的,ng-if是必须的。

<div ng-repeat="post in posts">
  <div class="post" ng-class="{
      'post-image': post.type === 'image','post-video': post.type === 'video'">
    <video ng-if="post.type === 'video'" ng-src="post.video" />
    <img ng-if="post.type === 'image'" ng-src="post.image" />
    <div ng-bind="post.content" />
  </div>
</div>
原文链接:https://www.f2er.com/angularjs/145139.html

猜你在找的Angularjs相关文章