【发布时间】:2016-02-08 04:34:22
【问题描述】:
在尝试在show() 上执行以下代码时,我们得到一个异常,即links 属性无法找到模型,无论它是由类指定还是由实体名称指定。
Ext.define('myapp.view.film.FilmsViewController', {
//extend: 'myapp.view.base.ViewController',
extend: 'Ext.app.ViewController',
alias: 'controller.films',
onAdd: function(button, event, options) {
this.createDialog(null)
},
createDialog: function(record) {
var me = this;
var view = me.getView(); //here is film panel
me.isEdit = !!record; //convert record to boolean
me.dialog = view.add({ //#3
xtype: 'filmwindow',
viewModel: { //#4
data: { //#5
title: record ? 'Edit: ' + record.get('title') : 'Add New Film',
},
links: { //#6
currentFilm: record || { //#7
//type: 'Film',
type: 'myapp.model.film.Film',
create: true
}
}
},
//session: true
});
me.dialog.show();
},
如果我们注释代码的links 部分,其余的工作正常。
这里是异常的有趣部分:
[E] Ext.app.ViewModel.getRecord(): Invalid model name: myapp.model.film.Film
log @ ext-all-rtl-debug.js?_dc=1446847440066:9121
Ext.apply.raise @ ext-all-rtl-debug.js?_dc=1446847440066:2606
Ext.raise @ ext-all-rtl-debug.js?_dc=1446847440066:2691
Ext.define.privates.getRecord @ ext-all-rtl-debug.js?_dc=1446847440066:99865
Ext.define.linkTo @ ext-all-rtl-debug.js?_dc=1446847440066:99748
Ext.define.privates.applyLinks @ ext-all-rtl-debug.js?_dc=1446847440066:100120
如果您深入研究源代码,您会发现检查 myapp.model.film.Film 是否为类的 if 语句失败..
【问题讨论】:
-
尝试添加
requires: [ 'myapp.model.film.Film' ]作为视图控制器的属性 - 听起来该类尚未在任何地方指定为依赖项,因此不会在编译源中包含/解析。 -
@Emissary 感谢您的帮助。这也是我们最初的想法,但最终的解决方案来自一个更疯狂的地方。在下面找到它
标签: javascript extjs mvvm extjs6 dynamic-class-creation