双向绑定不适用于指令模板中的contenteditable

时间:2015-08-04 16:22:05

标签: angularjs binding angularjs-directive contenteditable angularjs-ng-model

我已经创建了一个指定模板的指令。我希望看到我在文本框下面的j$('[id$="deleteActionStatusId"]').fadeIn(); div中输入的内容。但debug仅显示初始值且未更新。我认为我可能正在做一些愚蠢的错误。但我无法弄明白。

以下是指令:

debug

我正在使用它如下:

angular.module('directiveBinding', [])
  .directive('mydirective', function() {
    var my_template = '<div contenteditable="true" ng-model="myobj.text"' + 
        'class="contenteditable col-xs-12 col-md-6 col-md-offset-3">{{myobj.text}}</div>' +
        '<div class="debug clearfix"><br>{{myobj.text}}</div>';

    var linker = function(scope, element, attrs, ngModel) {
      console.log('Linker called');
      console.log('scope.myobj.text: ' + scope.myobj.text);
    }

    var controller = function($scope) {
      $scope.myobj = {};
      $scope.myobj.text = 'some value';
      $scope.text = "hello world"

      console.log('$scope.myobj.text: ' + $scope.myobj.text);
    }

    return {
      require: '?ngModel',
      restrict: "E",
      link: linker,
      controller: controller,
      template: my_template,
      scope: {}
      };
  });

修改

如果我将模板更改为使用<mydirective></mydirective> 而不是<input> div,则上述代码有效。

contenteditable

Here is the plunker for the same.

1 个答案:

答案 0 :(得分:0)

我相信你的问题在于$ scope.text,你永远不应该绑定到基元。

在你的html中更改ng-model =“text.something”以及{{text}}到{{text.something}}。