【发布时间】:2014-06-23 00:24:49
【问题描述】:
使用标记:
<body ng-app="app" ng-controller="ctrl">
<h1>Type below in the editable div</h1>
<h3>Use ng-bind:</3>
<div class="editable" contenteditable=true obj="obj1" ng-bind="obj1.content"></div>
<h3>Content:</h3>
<div>{{obj1.content}}</div>
<h3>Use interpolation</h3>
<div class="editable" contenteditable=true obj="obj2">{{obj2.content}}</div>
<h3>Content:</h3>
<div>{{obj2.content}}</div>
</body>
还有一点js:
var app = angular.module('app', []);
app.controller('ctrl', function($scope) {
$scope.obj1 = {
content: ''
};
$scope.obj2 = {
content: ''
};
});
app.directive('contenteditable', function() {
return {
scope: {
obj: '='
},
restrict: 'A',
link: function(scope, elem) {
elem.on('keyup', function() {
var text = elem.text();
scope.obj.content = text;
scope.$apply();
});
}
};
});
我试图用两种方式数据绑定编写一个 contenteditable 指令。但是奇怪的事情发生了:
使用 ngBind: 键入类似 'a' 的内容,插入符号会跳回第一个位置,而不是在 'a' 之后;
使用插值:输入'a'之类的东西,它会变成'aa'。
现场演示:http://jsbin.com/bifabuyu/5/edit
这里发生了什么,我该如何解决?
【问题讨论】:
标签: html angularjs contenteditable