我的网络应用已部署angularjs 1.3.7,wakanda 10.187175等......
当应用执行角度/ wakanda .save()
时,textarea
光标位置通常会移至0,0
目前无法选择更新到当前版本的angularjs。
.directive ('ckEditor', function () {
return {
require: '?ngModel',
link: function($scope, $elm, attr, ngModel) {
var config = {
toolbar:[
{ name: 'paragraph', items: [ 'NumberedList', 'BulletedList'] },
{ name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', '-', 'Undo', 'Redo'] },
{ name: 'insert', items: [ 'SpecialChar'] },
{ name: 'editing', items: [ 'Scayt', 'Options', 'Dictionaries', 'Check Spelling'] }
]
};//, 'PasteText', 'PasteFromWord'
config.toolbarLocation = 'top';
config.scayt_autoStartup = true;
config.autoParagraph = true;
config.title = false;
config.tabSpaces = 4;
var ck = CKEDITOR.inline ($elm[0], config);
$scope.lastApply = new Date();
$scope.lastSave = new Date();
$scope.saveStoryTimeout = null;
$scope.toHtml = false;
if (!ngModel) return;
ck.on('change', function( evt ) {
console.log(new Date().toString().substring(16,24),'change');
var words = evt.editor.getData();
if(words) {
if($scope.saveStoryTimeout) {
clearTimeout($scope.saveStoryTimeout);
}
$scope.saveStoryTimeout = setTimeout(function () {$scope.saveStoryNow(null,'auto'); }, 1000 * 3);
}
});
ck.on('activeEnterModeChange', function() { console.log(new Date().toString().substring(16,24),'activeEnterModeChange'); } );
ck.on('activeFilterChange', function() { console.log(new Date().toString().substring(16,24),'activeFilterChange'); } );
ck.on('afterCommandExec', function() { console.log(new Date().toString().substring(16,24),'afterCommandExec'); } );
ck.on('afterInsertHtml', function() { console.log(new Date().toString().substring(16,24),'afterInsertHtml'); } );
ck.on('afterPaste', function() { console.log(new Date().toString().substring(16,24),'afterPaste'); } );
ck.on('afterSetData', function() { console.log(new Date().toString().substring(16,24),'afterSetData'); } );
ck.on('afterUndoImage', function(evt) { console.log(new Date().toString().substring(16,24),'afterUndoImage');
} );
ck.on('ariaEditorHelpLabel', function() { console.log(new Date().toString().substring(16,24),'ariaEditorHelpLabel'); } );
ck.on('ariaWidget', function() { console.log(new Date().toString().substring(16,24),'ariaWidget'); } );
ck.on('autogrow', function() { console.log(new Date().toString().substring(16,24),'autogrow'); } );
ck.on('beforeCommandExec', function() { console.log(new Date().toString().substring(16,24),'beforeCommandExec'); } );
ck.on('beforeGetData', function(evt) { console.log(new Date().toString().substring(16,24),'beforeGetData'); } );
ck.on('beforeModeUnload', function() { console.log(new Date().toString().substring(16,24),'beforeModeUnload'); } );
ck.on('beforeSetMode', function() { console.log(new Date().toString().substring(16,24),'beforeSetMode'); } );
ck.on('beforeUndoImage', function(evt) { console.log(new Date().toString().substring(16,24),'beforeUndoImage'); } );
ck.on('blur', function() { console.log(new Date().toString().substring(16,24),'blur');
} );
ck.on('change', function(evt) { console.log(new Date().toString().substring(16,24),'change');
} );
ck.on('configLoaded', function() { console.log(new Date().toString().substring(16,24),'configLoaded'); } );
ck.on('contentDirChanged', function() { console.log(new Date().toString().substring(16,24),'contentDirChanged'); } );
ck.on('contentDom', function() { console.log(new Date().toString().substring(16,24),'contentDom'); } );
ck.on('contentDomInvalidated', function() { console.log(new Date().toString().substring(16,24),'contentDomInvalidated'); } );
ck.on('contentDomUnload', function() { console.log(new Date().toString().substring(16,24),'contentDomUnload'); } );
ck.on('customConfigLoaded', function() { console.log(new Date().toString().substring(16,24),'customConfigLoaded'); } );
ck.on('dataFiltered', function() { console.log(new Date().toString().substring(16,24),'dataFiltered'); } );
ck.on('dataReady', function(evt) { console.log(new Date().toString().substring(16,24),'dataReady');
//$scope.restoreCursor(evt);
} );
ck.on('destroy', function() { console.log(new Date().toString().substring(16,24),'destroy'); } );
ck.on('dialogHide', function() { console.log(new Date().toString().substring(16,24),'dialogHide'); } );
ck.on('dialogShow', function() { console.log(new Date().toString().substring(16,24),'dialogShow'); } );
ck.on('dirChanged', function() { console.log(new Date().toString().substring(16,24),'dirChanged'); } );
ck.on('doubleclick', function() { console.log(new Date().toString().substring(16,24),'doubleclick'); } );
ck.on('dragend', function() { console.log(new Date().toString().substring(16,24),'dragend'); } );
ck.on('dragstart', function() { console.log(new Date().toString().substring(16,24),'dragstart'); } );
ck.on('drop', function() { console.log(new Date().toString().substring(16,24),'drop'); } );
ck.on('elementsPathUpdate', function() { console.log(new Date().toString().substring(16,24),'elementsPathUpdate'); } );
ck.on('fileUploadRequest', function() { console.log(new Date().toString().substring(16,24),'fileUploadRequest'); } );
ck.on('fileUploadResponse', function() { console.log(new Date().toString().substring(16,24),'fileUploadResponse'); } );
ck.on('floatingSpaceLayout', function() { console.log(new Date().toString().substring(16,24),'floatingSpaceLayout'); } );
ck.on('focus', function() { console.log(new Date().toString().substring(16,24),'focus');
} );
ck.on('getData', function(evt) { console.log(new Date().toString().substring(16,24),'getData'); } );
ck.on('getSnapshot', function(evt) { console.log(new Date().toString().substring(16,24),'getSnapshot'); } );
ck.on('insertElement', function() { console.log(new Date().toString().substring(16,24),'insertElement'); } );
ck.on('insertHtml', function() { console.log(new Date().toString().substring(16,24),'insertHtml'); } );
ck.on('insertText', function() { console.log(new Date().toString().substring(16,24),'insertText'); } );
ck.on('instanceReady', function() { console.log(new Date().toString().substring(16,24),'instanceReady'); } );
ck.on('key', function( evt) { console.log(new Date().toString().substring(16,24),'key: ' + evt.data.keyCode); $scope.lastKey = evt.data.keyCode;} );
ck.on('langLoaded', function() { console.log(new Date().toString().substring(16,24),'langLoaded'); } );
ck.on('loadSnapshot', function() { console.log(new Date().toString().substring(16,24),'loadSnapshot'); } );
ck.on('loaded', function() { console.log(new Date().toString().substring(16,24),'loaded'); } );
ck.on('lockSnapshot', function() { console.log(new Date().toString().substring(16,24),'lockSnapshot'); } );
ck.on('maximize', function() { console.log(new Date().toString().substring(16,24),'maximize'); } );
ck.on('menuShow', function() { console.log(new Date().toString().substring(16,24),'menuShow'); } );
ck.on('mode', function() { console.log(new Date().toString().substring(16,24),'mode'); } );
ck.on('notificationHide', function() { console.log(new Date().toString().substring(16,24),'notificationHide'); } );
ck.on('notificationShow', function() { console.log(new Date().toString().substring(16,24),'notificationShow'); } );
ck.on('notificationUpdate', function() { console.log(new Date().toString().substring(16,24),'notificationUpdate'); } );
ck.on('paste', function() { console.log(new Date().toString().substring(16,24),'paste'); } );
ck.on('pluginsLoaded', function() { console.log(new Date().toString().substring(16,24),'pluginsLoaded'); } );
ck.on('readOnly', function() { console.log(new Date().toString().substring(16,24),'readOnly'); } );
ck.on('removeFormatCleanup', function() { console.log(new Date().toString().substring(16,24),'removeFormatCleanup'); } );
ck.on('required', function() { console.log(new Date().toString().substring(16,24),'required'); } );
ck.on('resize', function() { console.log(new Date().toString().substring(16,24),'resize'); } );
ck.on('save', function() { console.log(new Date().toString().substring(16,24),'save'); } );
ck.on('saveSnapshot', function(evt) { console.log(new Date().toString().substring(16,24),'saveSnapshot: ');
} );
ck.on('selectionChange', function() { console.log(new Date().toString().substring(16,24),'selectionChange');
} );
ck.on('setData', function() { console.log(new Date().toString().substring(16,24),'setData');
} );
ck.on('stylesSet', function() { console.log(new Date().toString().substring(16,24),'stylesSet'); } );
ck.on('template', function() { console.log(new Date().toString().substring(16,24),'template'); } );
ck.on('toDataFormat', function(evt) { console.log(new Date().toString().substring(16,24),'toDataFormat'); } );
//ck.on( 'toHtml', function( evt) {
// //$scope.toHtml = true;
//}, null, null, 15 );
ck.on('toHtml', function() { console.log(new Date().toString().substring(16,24),'toHtml');
} );
ck.on('unlockSnapshot', function() { console.log(new Date().toString().substring(16,24),'unlockSnapshot'); } );
ck.on('updateSnapshot', function() { console.log(new Date().toString().substring(16,24),'updateSnapshot'); } );
ck.on('widgetDefinition', function() { console.log(new Date().toString().substring(16,24),'widgetDefinition'); } );
ngModel.$render = function (value) {
if($scope.story && $scope.story.Content) {
ck.setData($scope.story.Content);
}
};
$scope.$on("$destroy",function() {
CKEDITOR.instances[ck.name].destroy();
});
}
};
})
$scope.handleStorySaveCancel = function(action) {
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: start');
if($scope.saveStoryTimeout) {
clearTimeout($scope.saveStoryTimeout);
}
$scope.lastApply = new Date();
if(action && action == 'save') {
$scope.story.Content = CKEDITOR.instances.storyContent.getData();
$scope.story.Headline = document.getElementById('headline').value;
if( $scope.headline === $scope.story.Headline &&
$scope.content === $scope.story.Content &&
$scope.status === $scope.story.Status &&
$scope.journalist === $scope.story.Journalist_ID &&
$scope.editor === $scope.story.Editor_ID) {
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: $scope.storyOriginal === $scope.story');
$state.go('story.list', {
storyId : $stateParams.storyId,
pubId : $stateParams.pubId
});
} else {
$scope.story.$save().then(function(e){
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: $scope.story.$save().then: end');
$state.go('story.list', {
storyId : $stateParams.storyId,
pubId : $stateParams.pubId
});
}, function (e) {
console.log('[StoryDetailCtrl] $save failed ', e);
var msg = $scope.msgParse(e);
$scope.storyFindOneChanged({
storyId : $stateParams.storyId,
msg : msg
});
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: $save failed : end');
});
}
} else if(action && action == 'cancel') {
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: cancel : end');
$state.go('story.list', {
storyId : '',
pubId : ''
});
} else if(action && action == 'commit') {
$scope.story.Content = CKEDITOR.instances.storyContent.getData();
$scope.story.$save().then(function(e){
console.log('[StoryDetailCtrl] $save e ', e);
$scope.userMessage = 'saved';
$scope.userMessageTimeout = setTimeout(function () {$scope.userMessageClear();}, 1000 * 5);
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: commit : end');
}, function (e) {
console.log('[StoryDetailCtrl] $save failed ', e);
var msg = $scope.msgParse(e);
$scope.storyFindOneChanged({
storyId : $stateParams.storyId,
msg : msg
});
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: commit failed : end');
});
}
console.log('[StoryDetailCtrl] $scope.handleStorySaveCancel: end');
};