Javascript 在AngularJS中销毁和创建指令

Javascript 在AngularJS中销毁和创建指令,javascript,angularjs,angularjs-directive,frontend,angularjs-digest,Javascript,Angularjs,Angularjs Directive,Frontend,Angularjs Digest,我对AngularJS(具体来说是编程的异步范例)非常陌生,并且正在从事我的第一个AngularJS项目。我知道它的基本原理和基本原理。 问题:我有一个指令,只有当我有数据时才需要创建该指令,并且数据是异步获取的。此外,该指令也存在于控制器的模板中。我该怎么做呢? 我的方法:在指令上设置ng if=“variable”,一旦数据可用,就需要创建该指令,并监视该变量,一旦设置了变量,就可以创建该指令。 但是,我无法通过编程实现这一点!我如何才能做到这一点,或者是否有更好的方法 控制器 $scope

我对AngularJS(具体来说是编程的异步范例)非常陌生,并且正在从事我的第一个AngularJS项目。我知道它的基本原理和基本原理。
问题:我有一个指令,只有当我有数据时才需要创建该指令,并且数据是异步获取的。此外,该指令也存在于控制器的模板中。我该怎么做呢?
我的方法:在指令上设置ng if=“variable”,一旦数据可用,就需要创建该指令,并监视该变量,一旦设置了变量,就可以创建该指令。
但是,我无法通过编程实现这一点!我如何才能做到这一点,或者是否有更好的方法

控制器

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

你好,世界
`

另外,$digest在完成控制器模板的执行后,将如何执行该特定指令?

请参见下面的示例

控制器和指令

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>"
 };
});
app.controller('someCtrl',函数($scope,$http){
//初始$scope.dataFetched设置为false
$scope.dataFetched=false;
$http.get('https://jsonplaceholder.typicode.com/posts/1')
.然后(功能(响应){
//一些工作基于响应
//回调时,将$scope.dataFetched设置为true
$scope.dataFetched=true;
});
});
指令(“someDirective”,function()){
返回{
模板:“我是一个指令!”
};
});
和HTML格式

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


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

您可以将指令放入html元素中,并在该元素上使用ng if,如下所示:


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

感觉您在这里太努力了。通常,指令已经对异步数据做出响应,不需要“延迟”。是否有某种原因导致在没有数据的情况下在DOM中存在该指令会导致问题?异步数据获取代码在controller中,如果该指令存在于DOM中,则是问题。这张图可能会帮助你理解我在做什么,这张图应该显示什么?它绝对不会显示任何数据,也不会显示你为什么担心。同样,如果指令设计正确,它在处理异步数据时应该没有问题。。。这是angular的关键租户之一,也是它如此强大的原因之一。在这里,你问的是如何阻止框架中内置的东西自然发生,而不是解释为什么你觉得需要这样做。不要从程序上考虑角度,而是从组合上考虑角度。角度摘要周期知道它正在监视的数据何时发生了更改,并调整DOM以响应这些数据更改。除非您的指令正在执行非常异常的操作,否则它应该是空的,没有数据,然后显示为数据,而无需强制执行。它将加载指令。检查指令的应用调试器链接函数。当然这将加载指令。但只有在异步从http调用返回之后。您可以在回调中添加条件,然后加载指令。你说的是哪一个链接?指令的链接功能。不,您的指令将立即加载视图加载。
<div ng-controller="someCtrl">
  <some-directive ng-show="dataFetched"></some-directive>
</div>