模板内的Angular指令,HOWTO接收参数(summerNote编辑器)

时间:2016-04-15 18:59:02

标签: angularjs directive summernote

我使用summernote编辑器作为一个指导版本,作为一个指令,从这里开始:https://github.com/summernote/angular-summernote

这样做时:

<summernote config='options'></summernote>
....
controllerfn = function() {
    var vm = this;
    vm.options = {
        height: 300
    }
}

一切都很好。

在指令中使用此方法时,它不会:

angular
    .module('common')
        .directive('textArea', textAreaFn);

textAreaFn.$inject = [ '$compile' ];

function textAreaFn($compile) {
    return {
        require: "?ngModel",
        scope: { 
        },
        template: "<summernote config='options'></summernote>",
        link: function(scope, element, attrs, ngModel) {
            scope.options = {
                height: 300
            };
          $compile(element.contents())(scope)


        }
    };
}

有人知道为什么这不起作用吗?以及如何解决?非常感谢!

1 个答案:

答案 0 :(得分:1)

它略微隐藏在角度文档中,但有一个前后链接功能的概念。 https://docs.angularjs.org/api/ng/service/$compile#pre-linking-function

预链接功能中的代码将在链接任何子元素之前执行。

angular
    .module('common')
        .directive('textArea', textAreaFn);

textAreaFn.$inject = [ '$compile' ];

function textAreaFn($compile) {
    return {
        require: "?ngModel",
        scope: {
        },
        template: "<summernote config='options'></summernote>",
        link: {
          pre: function(scope, element, attrs, ngModel) {
            scope.options = {
                height: 300
            };
          },
          post: function(scope, element, attrs, ngModel) {
            // code you want to run after all child elements have been linked
          }
        }
    };
}