如何根据范围变量的值在两个div之间切换?

时间:2015-03-19 14:05:01

标签: angularjs angularjs-scope angularjs-ng-repeat

我有一个问题,我想要根据范围变量的值在两个div之间切换。范围变量在运行时更新,我希望我的视图在运行时更新。

问题是视图加载了范围变量的初始值,范围变量的值在运行时被更改但视图不受影响

以下是示例代码:

HTML

<div **ng-if="pending=='done'"**> <!-- No Records Found -->
   <div>
        <center><h2> You have not any contacts yet. </h2>
   </div>
</div>                       
<div>
  <table **ng-if="pending=='not done'"**> 
    <thead>
      <tr>
          <th>ID</th>
          <th>Name</th>
          <th>E-mail</th>
          <th>Contact Number</th>
      </tr>
    </thead>
    <tbody>
      <tr ng-repeat="(Id, value) in user.Count ng-if="value.status=='Approved'">
        <td> {{Id}} </td>
        <td> {{value.name}} </td>
        <td> {{value.email}} </td>
        <td> {{value.phone}} </td>
      </tr>
    </tbody>
  </table>
</div>
<div ng-init="changescopevalue()">
  changing scope now
</div>

CONTROLLER中的功能

$scope.pending = "done";

$scope.changescopevalue = function() {
  $scope.pending = "not done";
};

所以div [ng-if =&#34; pending ==&#39; done&#39;&#34;] 加载,然后范围变量变为& #34;未完成&#34; ,但视图不受影响。

请帮助..

感谢。

1 个答案:

答案 0 :(得分:0)

你应该避免ng-init。来自angular doc

  

ngInit的唯一合适用途是用于别名ngRepeat的特殊属性,如下面的演示所示。除了这种情况,您应该使用控制器而不是ngInit来初始化作用域上的值。

您忘了关闭<center>标记,但最好不要使用它,因为它已被弃用。请改用css。此外,您的ng-repeat值缺少引号",应为:

ng-repeat="(Id, value) in user.Count" ng-if="value.status=='Approved'"

除此之外,如果您正确设置了角度,那么基于范围变量ng-if的值的pending效果很好:

Fiddle