内部でmanager.beginUpdate()が呼ばれ、endUpdate()が呼ばれる前にエラーで中断されるため、beginUpdate()が呼ばれっぱなしのままになってしまっているからだと思われる。
以下、検証コード。
manager = h5.core.data.createManager('Manager');
model = manager.createModel({
name: 'Test',
schema: {
id: {
id: true
},
v: {
type: 'string'
}
}
});
item = model.create({
id: '001'
});
item.addEventListener('change', function(e) {
console.log(e)
});
try {
item.set('v', 0); // error
} catch (e) {
}
item.set('v', 'abc'); // イベントが上がらない
manager.endUpdate(); // イベントが呼ばれる
内部でmanager.beginUpdate()が呼ばれ、endUpdate()が呼ばれる前にエラーで中断されるため、beginUpdate()が呼ばれっぱなしのままになってしまっているからだと思われる。
以下、検証コード。