javascript – 如何控制角度指令的初始化?

前端之家收集整理的这篇文章主要介绍了javascript – 如何控制角度指令的初始化?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个指令用作表单控件.此伪指令隐藏在模态对话框中,并在用户单击按钮以显示表单时显示.由于此指令连接到某些Web服务,我不希望它初始化,除非用户单击按钮并显示表单(以防止不必要的Web服务调用).所以,我正在寻找的是父控制器触发指令执行一些初始化代码的好方法.这是一个例子:
App.controller('parentCtrl',['$scope',function($scope) {
  $scope.onButtonClick = function onButtonClick() {
    // tell directive to init somehow
  };
}]);

App.directive('myDirective',function() {
return {
  restrict: 'E',scope: {},controller: function($scope,myService) {
    function init() {
      myService.getData().then(function(value) { //do init stuff });
    }
  }
});

假设parentCtrl的模板包含一个标签.

解决方法

在ng-if中标记您的元素将阻止该指令在需要之前进行初始化. (默认情况下,scope.loadModal应为false)
<my-directive ng-if='loadModal'></mydirective>

注意:在显示指令后,设置scope.loadModal = false将会从DOM中卸载指令.将其设置为true将重新加载指令,从而产生另一个http请求.

猜你在找的JavaScript相关文章