需要从控制器的ng-init函数调用获取模板以获取Angularjs中的自定义指令

Madasu K

作为angularjs指令的初学者,我有点困惑。任何人都可以在以下方面为我提供帮助。以下是我的自定义指令。

app.directive('customCharts', ['$compile', function($compile) {
    return {
        restrict: 'EA',
        scope: {
            dashboard1Data: '=',
            title1Text: '=',
            dashboard2Data: '=',
            title2Text: '=',
        },
        link: function(scope, element, attrs) {
            var template = '<div class="col1"> <p class="graphtitle"> {{title1Text}}</p>  <c3-simple id="dashboard1Data" config="dashboard1Data"></c3-simple> </div>' + ' <div class="col2"> <p class="graphtitle"> {{title2Text}}</p>  <c3-simple id="dashboard2Data" config="dashboard2Data"></c3-simple> </div> ';

            var parent = angular.element(document.querySelectorAll('.customChartsDiv')) // DOM element where the compiled template can be appended
            var linkFn = $compile(template);
            var content = linkFn(scope);
            parent.append(content);   
         }
    }
 }]);

我希望我的模板为template = templateFromController即,我不想在指令中对我的模板进行硬编码。相反,我想在ng-init函数调用期间在控制器中形成模板,并且我希望我的指令使用该模板。我该怎么做?

因此,在我的控制器中,我会遇到一些类似的问题,

var templateFromController = '<div class="col1"> <p class="graphtitle"> {{title1Text}}</p>  <c3-simple id="dashboard1Data" config="dashboard1Data"></c3-simple> </div>'
             +' <div class="col2"> <p class="graphtitle"> {{title2Text}}</p>  <c3-simple id="dashboard2Data" config="dashboard2Data"></c3-simple> </div> '       
             +  '<div class="col1"> <p class="graphtitle"> {{title3Text}}</p>  <c3-simple id="dashboard3Data" config="dashboard3Data"></c3-simple> </div>'
             +' <div class="col2"> <p class="graphtitle"> {{title3Text}}</p>  <c3-simple id="dashboard4Data" config="dashboard4Data"></c3-simple> </div> ';

或者

var templateFromController = '<div class="col1"> <p class="graphtitle"> {{title1Text}}</p>  <c3-simple id="dashboard1Data" config="dashboard1Data"></c3-simple> </div>'
         +' <div class="col2"> <p class="graphtitle"> {{title2Text}}</p>  <c3-simple id="dashboard2Data" config="dashboard2Data"></c3-simple> </div> ';

像这样,基于控制器的ng-init函数调用中的其他条件,我将形成my var templateFromController,并且我希望我的自定义指令使用此templateFromController作为其模板。有人可以帮我做吗?

@Daniel,根据您的建议,我进行了以下更改:

app.directive('customCharts', ['$compile', function($compile) {
    return {
        restrict: 'EA',
        scope: {
            dashboard1Data: '=',
            title1Text: '=',
            dashboard2Data: '=',
            title2Text: '=',
            template: '='
        },
        link: function(scope, element, attrs) {
            var parent = angular.element(document.querySelectorAll('.customChartsDiv')) // DOM element where the compiled template can be appended
            var linkFn = $compile(template);
            var content = linkFn(scope);
            parent.append(content);
        }
    }

}]);

并在控制器中:

var template = '<div> </div>';    
$scope.init = function() {  
    template = '<div class="col1"> <p class="graphtitle"> {{title1Text}}</p>  <c3-simple id="dashboard1Data" config="dashboard1Data"></c3-simple> </div>';
    }

在我的jsp中,我有:

<div class="customChartsDiv">
    <div custom-charts dashboard1-data="dashboard1Data" title1-text="title1Text" dashboard2-data="dashboard2Data" title2-text="title2Text" template="template"></div>
</div>

但这给了错误:模板未在var linkFn = $compile(template);我的指令定义

丹尼尔·斯明克(Daniel Smink)

您可以将其定义为指令的属性,然后传入对象/字符串(在控制器中创建)。

app.directive('customCharts', ['$compile', function($compile) {
return {
    restrict: 'EA',
    scope: {
        dashboard1Data: '=',
        title1Text: '=',
        dashboard2Data: '=',
        title2Text: '=',
        template: '='
    },
    link: function(scope, element, attrs) {
        var parent =   angular.element(document.querySelectorAll('.customChartsDiv')) // DOM element      where the compiled template can be appended
        var linkFn = $compile(scope.template);
        var content = linkFn(scope);
        parent.html('').append(content); 
     }
   }
}]);

这是一个显示此功能的plnkr:http ://embed.plnkr.co/O6gNn1b6C7xJ3y2jJC05/preview

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular指令-需要从指令控制器访问所需的控制器

来自分类Dev

在控制器angularjs内调用自定义指令函数

来自分类Dev

我需要从Yii 2中的前端控制器访问后端模型

来自分类Dev

需要从数组中找到控制器中的匹配项!Ruby on Rails

来自分类Dev

在Jasmine测试中获取自定义指令的控制器的范围

来自分类Dev

在Jasmine测试中获取自定义指令的控制器的范围

来自分类Dev

自定义指令模板中的AngularJS控制变量

来自分类Dev

AngularJS指令从控制器中的Ajax调用获取数据

来自分类Dev

视图控制器中的对象需要从视图控制器执行展开隔离。如何才能做到这一点?

来自分类Dev

AngularJS-从自定义指令将参数从ng-repeat传递到控制器

来自分类Dev

AngularJS:使用在控制器/指令中其他位置定义的自定义javascript函数

来自分类Dev

如何从角度控制器调用自定义指令

来自分类Dev

在Angularjs自定义指令中隔离控制器

来自分类Dev

AngularJS:在ng-repeat中调用控制器函数

来自分类Dev

AngularJS:在ng-repeat中调用控制器函数

来自分类Dev

使用编译中的自定义模板在指令中访问AngModel控制器

来自分类Dev

需要控制器的测试指令

来自分类Dev

需要控制器的测试指令

来自分类Dev

Angular JS指令定义-需要ngModelController以及自定义控制器

来自分类Dev

从控制器调用angularjs指令函数

来自分类Dev

从控制器angularjs调用指令函数

来自分类Dev

AngularJS-在访问DOM的自定义指令中设置控制器的$ scope变量

来自分类Dev

将数组对象从控制器传递到AngularJS中的自定义指令

来自分类Dev

将数组对象从控制器传递到AngularJS中的自定义指令

来自分类Dev

指令应从模板或控制器中获取数据

来自分类Dev

AngularJS如何在自定义指令标签内使用ng-model,动态设置控制器?

来自分类Dev

AngularJS:从我的指令中调用控制器函数

来自分类Dev

ng-view的范围问题,父控制器,自定义指令

来自分类Dev

AngularJS,如何从控制器内部获取并设置ng-repeat中定义的过滤器?

Related 相关文章

  1. 1

    Angular指令-需要从指令控制器访问所需的控制器

  2. 2

    在控制器angularjs内调用自定义指令函数

  3. 3

    我需要从Yii 2中的前端控制器访问后端模型

  4. 4

    需要从数组中找到控制器中的匹配项!Ruby on Rails

  5. 5

    在Jasmine测试中获取自定义指令的控制器的范围

  6. 6

    在Jasmine测试中获取自定义指令的控制器的范围

  7. 7

    自定义指令模板中的AngularJS控制变量

  8. 8

    AngularJS指令从控制器中的Ajax调用获取数据

  9. 9

    视图控制器中的对象需要从视图控制器执行展开隔离。如何才能做到这一点?

  10. 10

    AngularJS-从自定义指令将参数从ng-repeat传递到控制器

  11. 11

    AngularJS:使用在控制器/指令中其他位置定义的自定义javascript函数

  12. 12

    如何从角度控制器调用自定义指令

  13. 13

    在Angularjs自定义指令中隔离控制器

  14. 14

    AngularJS:在ng-repeat中调用控制器函数

  15. 15

    AngularJS:在ng-repeat中调用控制器函数

  16. 16

    使用编译中的自定义模板在指令中访问AngModel控制器

  17. 17

    需要控制器的测试指令

  18. 18

    需要控制器的测试指令

  19. 19

    Angular JS指令定义-需要ngModelController以及自定义控制器

  20. 20

    从控制器调用angularjs指令函数

  21. 21

    从控制器angularjs调用指令函数

  22. 22

    AngularJS-在访问DOM的自定义指令中设置控制器的$ scope变量

  23. 23

    将数组对象从控制器传递到AngularJS中的自定义指令

  24. 24

    将数组对象从控制器传递到AngularJS中的自定义指令

  25. 25

    指令应从模板或控制器中获取数据

  26. 26

    AngularJS如何在自定义指令标签内使用ng-model,动态设置控制器?

  27. 27

    AngularJS:从我的指令中调用控制器函数

  28. 28

    ng-view的范围问题,父控制器,自定义指令

  29. 29

    AngularJS,如何从控制器内部获取并设置ng-repeat中定义的过滤器?

热门标签

归档