在AngularJS中销毁和创建指令

时间:2016-10-26 03:11:57

标签: javascript angularjs angularjs-directive frontend angular-digest

我是AngularJS的新手(具体的编程异步范例)和我的第一个AngularJS项目。我知道它的基本原理和基础 问题:我有一个指令,只有在我有数据时才需要创建,并且数据是异步获取的。此外,该指令存在于控制器的模板中。我应该怎么做呢? 我的方法:有一个ng-if ="变量"在数据可用时需要创建的指令,并监视该变量,一旦设置了变量,就会创建指令。
但是,我无法以编程方式执行此操作!我怎样才能实现这一点,或者有更好的方法。

控制器

$scope.dataFeteched= false;
$http.get(url)
    .then(function success(result){
        $scope.dataFeteched = true;
    });

HTML

<span>Hello World</span>
<directive-abc ng-if="dataFeteched"></directive-abc>`

一旦它已经完成控制器模板的执行,$ digest如何执行该特定指令?

2 个答案:

答案 0 :(得分:1)

您可以将指令放在html元素中,并在该元素上使用ng-if,如下所示:     redirect(base_url('about-us'));

如果 datafetched 为真,这将加载指令。

答案 1 :(得分:0)

请参阅下面的示例。

控制器和指令

app.controller('someCtrl', function($scope, $http){
    // intitially $scope.dataFetched is set to false
    $scope.dataFetched = false;
    $http.get('https://jsonplaceholder.typicode.com/posts/1')
     .then(function(response){
        // some work based on response
        // upon callback set the $scope.dataFetched to true
        $scope.dataFetched = true;

  });
});
zapp.directive("someDirective", function() {
 return {
     template : "<h1>I am a directive!</h1>"
 };
});

以HTML格式

<div ng-controller="someCtrl">
  <some-directive ng-show="dataFetched"></some-directive>
</div>

现在,当你运行它时,它只会在从http调用返回后显示该指令。要进行测试,您可以在http调用中注释掉$scope.dataFetched = true;,然后稍后取消注释。