我如何接收和使用字符串到指令的模板?

时间:2017-05-17 08:19:04

标签: angularjs angularjs-directive angularjs-1.6

我开始使用指令,现在我正在尝试使用权限级别渲染按钮。

假设我要渲染此按钮

<a ui-sref="#" data-toggle="modal" data-target="#modalCadastro"><div id="addButton" class="btn btn-success">Add</div></a>

指令:

.directive('test', function($http){
$http.get('system/test/gettemplate')
.then(function(response){
    if(response.data.success){ // small verification to know if it worked and i got a string with the template
        $scope.template = response.data.template;
    }
})
return{
    restrict: 'AE',
    scope:{},
    template: $scope.template // which is my template that comes from back-end
}
})

我知道我错过了一些非常小的东西,但我是Angular的新手。

1 个答案:

答案 0 :(得分:2)

您应该在.then来电的$http内退回模板。这是异步调用,因此在尝试return { ... }时,$scope.template可能尚未设置。

.directive('test', function($http) {
    $http.get('system/test/gettemplate').then(function(response) {
        if(response.data.success) {
            $scope.template = response.data.template;
            return {
                restrict: 'AE',
                scope:{},
                template: $scope.template
            }
        }
    });
});