我是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如何执行该特定指令?
答案 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;
,然后稍后取消注释。