確認した環境
- OS: OSX 10.8.3
- ブラウザ: Google Chrome 26.0.1410.65, Firefox 19.0.2 (他のブラウザは試してません)
- hifive: 1.1.4-all に含まれる dev 版
問題発生の状況
以下のようなコードを書いたとき parentModel を create するタイミングでエラーが発生します。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>hifive DataModel BUG</title>
</head>
<body>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="/hifive/h5-1.1.4.dev.js"></script>
<script>
var manager = h5.core.data.createManager('DataManager', 'model');
var parentModel = manager.createModel({
name: 'ParentModel',
schema: {
id: {
id: true,
type: 'integer',
}
}
});
var childModel = manager.createModel({
name: 'ChildModel',
base: '@ParentModel',
schema: {
name: {
type: 'string',
}
}
});
parentModel.create({ id: 0 });
</script>
</body>
</html>
Chrome だと h5-1.1.4.dev.js の 10710行目 で Uncaught TypeError: Object #<Object> has no method 'name' が発生し、Firefox だと同じ箇所で TypeError: this._itemValueCheckFuncs[prop] is not a function が発生することを確認しました。
childModel 側を削除するとエラーが発生しなくなることから、base を継承した側の name が base 側に影響をおよぼしてしまっているようです。
原因と思われる箇所
ちょっと原因を追ってみたんですが、base を指定した Model を createModel() で設定しているあいだに、validateDescripter() の中(h5-1.1.4.dev.js の 9500行目)で以下のように baseSchema を書き換えている部分が原因ではないかと思います。
schema = $.extend(baseSchema, schema);
確認した環境
問題発生の状況
以下のようなコードを書いたとき parentModel を create するタイミングでエラーが発生します。
Chrome だと h5-1.1.4.dev.js の 10710行目 で
Uncaught TypeError: Object #<Object> has no method 'name'が発生し、Firefox だと同じ箇所でTypeError: this._itemValueCheckFuncs[prop] is not a functionが発生することを確認しました。childModel 側を削除するとエラーが発生しなくなることから、base を継承した側の
nameが base 側に影響をおよぼしてしまっているようです。原因と思われる箇所
ちょっと原因を追ってみたんですが、base を指定した Model を createModel() で設定しているあいだに、validateDescripter() の中(h5-1.1.4.dev.js の 9500行目)で以下のように baseSchema を書き換えている部分が原因ではないかと思います。