当ng-if =“variable”为真时,想要调用控制器功能

时间:2017-05-24 20:50:39

标签: html angularjs

如果ng-if =“item.value”返回true,我有一个html脚本,我试图调用控制器中存在的函数。这是片段

<td class="rsp-p1">
        <span ng-if="item.result">
          {$ ctrl.hw_interface $}</span>
</td>

所以在这里,我正在寻找的流程是ng-if返回true调用函数driverInfo()然后该函数在hw_interface变量中设置我想要的值,因此我在上面的代码段中将该值显示为$ strl。 hw_interface 但我无法找到合适的方法。我试过ng-init()。非常感谢您的投入:)

这是我的angularjs代码

function driverInfo() {
  ironic.driverInfo(ctrl.driver,'power').then(function(response){
  alert(response)
  ctrl.hw_interface = response;
  });
}

(此函数签名现在没有参数,一旦我找到调用方式,我将更新签名。)

5 个答案:

答案 0 :(得分:1)

也许你可以试试像

ctrl.myfunc = function() {
   //do some time consuming work
   return false; //true;
};

<td class="rsp-p1">
   <span ng-if="ctrl.myfunct()">
      {{ ctrl.hw_interface }}
   </span>
</td>

答案 1 :(得分:1)

您是否尝试过将您的driverInfo()函数放入span中?哪里的driverInfo函数返回你想要的hw_interface变量的值是什么?因此,如果item.result返回一个truthy值,那么driverInfo函数将在span中返回hw-interface的值。

<td class="rsp-p1">
        <span ng-if="item.result">
          {$ctrl.driverInfo() }</span>
</td>

答案 2 :(得分:1)

ng-init应该可以正常工作:

<span ng-if="item.result" ng-init="yourFn()"></span>

但是,您知道会导致item.result更改的原因吗?你能对控制器中的变化作出反应并在那里调用你的功能吗?

答案 3 :(得分:0)

根据DelhiPanda的回答:

ctrl.myfunc = function() {
   //do some time consuming work
   return false; //true;
};

<td class="rsp-p1">
   <span ng-if="item.result && ctrl.myfunct()">
      {{ ctrl.hw_interface $ }}
   </span>
</td>

推理:在检查条件语句时,如果两个参数都需要是真实的,那么如果第一个参数为false,则不会对第二个参数进行评估。换句话说,该功能将不会运行。

希望这有帮助!

答案 4 :(得分:0)

将driverInfo()函数放在带有条件块的div中,它将起作用。

&#13;
&#13;
<div ng-if="item.result">

   {$ctrl.driverInfo() }

</div> 
&#13;
&#13;
&#13;