如何使用 ng-repeat 获取 ckeditor 的实例?
How to get instances of ckeditor with ng-repeat?
我正在尝试将 ckeditor 与 angularjs 一起使用,我已经为此添加了一个指令。它工作正常。问题是当我尝试获取 ckeditor 的实例列表时。
// 指令
app.directive('ckeditor', function () {
return {
require: '?ngModel',
link: function (scope, element, attr, ngModel) {
var ck = CKEDITOR.replace(element[0]);
if(!ngModel)return;
ck.on('pasteState', function () {
scope.$apply(function () {
ngModel.$setViewValue(ck.getData());
});
});
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
};
});
// ng-重复
<div ng-repeat="key in []| range:0:(vm.listCount-1)">
<textarea ckeditor id="content_{{key + 1}}"
ng-model="vm.contentList[key].content">
</textarea>
</div>
在控制器中,我正在尝试获取实例列表。那里而不是
content_0,content_1 等。我只得到 content_{{key + 1}} 一个实例
console.log(CKEDITOR.instances);
我想获得 ckeditor 的正确实例,但我只获得一个值,即 content_{{key + 1}} 请有人建议。
我的猜测是该指令需要在调用 CKEDITOR.replace
之前设置 id
属性:
app.directive('ckeditor', function () {
return {
require: '?ngModel',
link: function (scope, element, attr, ngModel) {
//COMPUTE id attribute
if (attr.key) {
var keyValue = scope.$eval(attr.key);
element[0].id += "_"+keyValue;
};
var ck = CKEDITOR.replace(element[0]);
if(!ngModel)return;
ck.on('pasteState', function () {
scope.$apply(function () {
ngModel.$setViewValue(ck.getData());
});
});
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
};
});
用法:
<div ng-repeat="key in [0,1]">
<textarea ckeditor key="$index+1" id="content"
ng-model="vm.contentList[key].content">
</textarea>
</div>
CKEDITOR 可能在 AngularJS 框架计算 id="content_{{key + 1}}"
之前实例化编辑器。
我正在尝试将 ckeditor 与 angularjs 一起使用,我已经为此添加了一个指令。它工作正常。问题是当我尝试获取 ckeditor 的实例列表时。
// 指令
app.directive('ckeditor', function () {
return {
require: '?ngModel',
link: function (scope, element, attr, ngModel) {
var ck = CKEDITOR.replace(element[0]);
if(!ngModel)return;
ck.on('pasteState', function () {
scope.$apply(function () {
ngModel.$setViewValue(ck.getData());
});
});
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
};
});
// ng-重复
<div ng-repeat="key in []| range:0:(vm.listCount-1)">
<textarea ckeditor id="content_{{key + 1}}"
ng-model="vm.contentList[key].content">
</textarea>
</div>
在控制器中,我正在尝试获取实例列表。那里而不是 content_0,content_1 等。我只得到 content_{{key + 1}} 一个实例
console.log(CKEDITOR.instances);
我想获得 ckeditor 的正确实例,但我只获得一个值,即 content_{{key + 1}} 请有人建议。
我的猜测是该指令需要在调用 CKEDITOR.replace
之前设置 id
属性:
app.directive('ckeditor', function () {
return {
require: '?ngModel',
link: function (scope, element, attr, ngModel) {
//COMPUTE id attribute
if (attr.key) {
var keyValue = scope.$eval(attr.key);
element[0].id += "_"+keyValue;
};
var ck = CKEDITOR.replace(element[0]);
if(!ngModel)return;
ck.on('pasteState', function () {
scope.$apply(function () {
ngModel.$setViewValue(ck.getData());
});
});
ngModel.$render = function (value) {
ck.setData(ngModel.$viewValue);
};
}
};
});
用法:
<div ng-repeat="key in [0,1]">
<textarea ckeditor key="$index+1" id="content"
ng-model="vm.contentList[key].content">
</textarea>
</div>
CKEDITOR 可能在 AngularJS 框架计算 id="content_{{key + 1}}"
之前实例化编辑器。