Javascript 如何使用angular指令防止默认属性值

Javascript 如何使用angular指令防止默认属性值,javascript,angularjs,Javascript,Angularjs,我有一个angular指令,它允许内容可编辑div使用ng模型。看起来像这样 app.directive("contenteditable", function() { return { restrict: "A", require: "ngModel", link: function(scope, element, attrs, ngModel) { function read() { ngModel.$setViewValue(element.html())

我有一个angular指令,它允许内容可编辑div使用ng模型。看起来像这样

app.directive("contenteditable", function() {
return {
  restrict: "A",
  require: "ngModel",
  link: function(scope, element, attrs, ngModel) {

    function read() {
      ngModel.$setViewValue(element.html());
    }

    ngModel.$render = function() {
      element.html(ngModel.$viewValue || "");
    };

    element.bind("blur keyup change", function() {
      scope.$apply(read);
    });
   }
};
});

但是,每当我将它与
一起使用以初始化为false时,它仍然默认为true。我的目标是拥有可以在可编辑和不可编辑之间切换的文本块,但我不确定如何在不被攻击的情况下覆盖此默认行为。

是否尝试通过作用域传递布尔值

app.directive("contenteditable", function() {
    return {
        restrict: "A",
        require: "ngModel",
        scope: {
            disabled: @disabled
        }
        link: function(scope, element, attrs, ngModel) {

           // reference scope.disabled to access attribute
       }
   };
});
然后在HTML元素中设置disabled属性,如下所示

<div contenteditable disabled="false"></div>


我发现了:这是一个配置错误。很长的解释,但指令与问题无关,因为我甚至没有将其正确连接到控制器。我现在使用的是ServiceNow,所以角度配置的工作方式有点不同。我相信,当我显式地指定contenteditable属性时,ng模型强迫它为true(即使我将其指定为false)。若我并没有为contenteditable指定一个值,那个么ng模型将根本无法工作,即使我动态地将contenteditable更改为true。我重命名了指令ngContenteditable,实际将其附加到控制器,并切换常规contenteditable属性,它工作正常。

我曾考虑过这样做,但我不确定如何处理链接函数中的布尔值。我是个新手。我知道link函数必须在内部实现这三个函数。但是,我不确定,一旦我得到布尔值,如何从link函数中有条件地应用该属性,您需要将其应用于什么?您是否尝试过对div应用
ng disabled
。我们的目标是能够将ng模型与DIV一起使用,这是本机不支持的。这个指令使我能够做到这一点。在设置div的“内容可编辑”属性之前,div是不可编辑的。但是,我希望这个属性最初为false。angular似乎忽略了这一点,并将“内容可编辑”设置为true。我引用了这个教程