ソースを参照

Setting data should render them.

Piotrek Koszuliński 9 年 前
コミット
b8e3d8744b

+ 5 - 3
packages/ckeditor5-engine/src/datacontroller.js

@@ -170,9 +170,11 @@ export default class DataController {
 		// Save to model.
 		const modelRoot = this.model.getRoot( rootName );
 
-		this.model.batch()
-			.remove( ModelRange.createFromElement( modelRoot ) )
-			.insert( ModelPosition.createAt( modelRoot, 0 ), this.parse( data ) );
+		this.model.enqueueChanges( () => {
+			this.model.batch()
+				.remove( ModelRange.createFromElement( modelRoot ) )
+				.insert( ModelPosition.createAt( modelRoot, 0 ), this.parse( data ) );
+		} );
 	}
 
 	/**

+ 11 - 0
packages/ckeditor5-engine/tests/datacontroller.js

@@ -99,6 +99,17 @@ describe( 'DataController', () => {
 			expect( count( modelDocument.history.getDeltas() ) ).to.equal( 1 );
 		} );
 
+		it( 'should fire #changesDone', () => {
+			const spy = sinon.spy();
+
+			schema.allow( { name: '$text', inside: '$root' } );
+			modelDocument.on( 'changesDone', spy );
+
+			data.set( 'foo' );
+
+			expect( spy.calledOnce ).to.be.true;
+		} );
+
 		it( 'should get root name as a parameter', () => {
 			schema.allow( { name: '$text', inside: '$root' } );
 			data.set( 'foo', 'main' );