【问题标题】:Call function in *ngIf*ngIf 中的调用函数
【发布时间】:2017-08-21 05:28:51
【问题描述】:

我有这种情况,我想调用一个函数来显示正确的 html 标记。这是我当前的代码:

<li ng-repeat="data in myBlock.myData">
    <div ng-if="data.type=='Jonh'">
       <div class='row'>
          <div class='col'>
           this is text for Jonh
          </div>
      </div>
    </div>
    <div ng-if="data.type=='Roy'">
      <div class='row'>
         <div class='col'>
           Roy will have a different text
        </div>
      </div>
    </div>
    <div ng-if="data.type=='Kevin'" > 
       <div class='row'>
          <div class='col'>
            Kevin text is also different
          </div>
       </div>
    </div>
</li>

我想将所有 ngif 合并到一个名为“showField(name)”的函数中,该函数将检查并返回正确的 html 标记。怎么可能做到这一点?我的最终 html 标记应如下所示:

<li ng-repeat="data in myBlock.myData">
   <div *ngIf="showField(data.type)">
      //Not sure how to implement this part
   </div>                       
</li>

【问题讨论】:

  • 将您的标记 html 定义为模板,然后使用 ng-if 指令包含正确的模板。
  • @HadiJ 很抱歉这么晚才回来。我认为您的建议是可行的方法,但我不确定如何将标记 html 定义为模板。我需要为模板创建自己的指令吗?

标签: angularjs angular-ng-if


【解决方案1】:

HTML:

<li ng-repeat="data in myBlock.myData">
   <div ng-if="checkValidDataType(data.type)">
       <div class='row'>
          <div class='col'>
             <label class='title' for="{{data.name}}">{{data.label}}</label>
             <span class="{{data.type.toLowerCase() + 'Class'}}">This is {{data.type}}</span>                 
          </div>
      </div>
   </div>                       
</li>

JS:

$scope.checkValidDataType = function(type) {
    return type === "Roy" || type === "Kevin" || type === "Jonh";
}

【讨论】:

  • 每次检查条件时调用函数是否有效?
  • @omkar 为什么不呢?
  • 我的意思是为什么我们不能使用布尔值而不是一路调用函数!
  • 我的意思是为什么我们不能使用布尔值而不是一路调用函数!
【解决方案2】:

你想要实现的是正确的方法,只需在控制器中声明方法并返回布尔值

$scope.showField = function(yourdata){
   //put the logic
   return true/false;
}

【讨论】:

  • 我相信我需要返回 html 标记而不是布尔值。你能再解释一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-12
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-04
  • 1970-01-01
相关资源
最近更新 更多