我正在使用从 Firebase 与 angularFire 同步/获取的数据来构建 DOM。每个 DOM 元素都是用这个简单的指令构建的:
angular.module('App')
.directive('acmsElement', function () {
return {
template: '<div ng-transclude></div> ',
restrict: 'E',
scope: {elem: '='},
transclude: true,
replace: true,
link: function postLink(scope, element, attrs) {
var el = angular.element(scope.elem.tag);
if(scope.elem.content){
el.text(scope.elem.content);
}
if(scope.elem.attributes) {
el.attr(scope.elem.attributes);
}
element.append(el);
}
};
});
并且所有元素都使用 ng-repeat 顺序呈现在网站上,并且每个元素/模型都可以使用 textarea 进行编辑:
<div ng-repeat="el in elems">
<acms-element elem="el">
<textarea style="width: 100%" ng-model="el.content"></textarea>
</acms-element>
</div>
在 Firebase 中,节点存储为一个数组,因此可以直接使用 ng-repeat 以正确的顺序显示它们。当我尝试编辑绑定到上面文本区域的任何模型时,问题就开始了,ng-repeat 在每次击键时工作。这会导致文本区域失去焦点,页面在渲染时闪烁,最烦人的是,在重新生成页面之前,我一次只能输入一个字符。不知道如何解决这个问题。
谢谢你的时间,
贾里德