我将Ext.Loader
文件的副本放在我的myApp\overrides
文件夹中。
我还编辑了sencha.cfg
所以它是这样的:
app.classpath=${app.dir}/app,${app.dir}/app.js,${app.dir}/overrides
我也把这个放在我的app.js
要求中:
requires: [
'AMC.overrides.Loader'
]
也试过这个:
requires: [
'overrides.Loader'
]
但是当我构建时,我仍然会收到此错误:
com.sencha.exceptions.ExBuild:无法找到C:\ myworkspace \ myApp \ app.js :: ClassRequire :: overrides.Loader
的任何文件
答案 0 :(得分:1)
我也遇到了这个问题,因为我正在使用grunt-filerev
这是我到目前为止最好的解决方案:
/**
* Override for Ext.Loader.getPath using Interceptor
* @return {string} The path after the build process
*/
(function() {
var method = Ext.Loader.getPath;
Ext.Loader.getPath = function() {
var path = method.apply(this, arguments);
return my.bootstrap.assets[path] || path;
};
})();
答案 1 :(得分:0)
Ext.Loader
具有paths
配置,允许您为每个命名空间指定自定义路径。
例如,如果您的AMC.overrides.whatever.ClassName
路径为/overrides/whatever/ClassName.js
,那么您需要这样的配置:
Ext.Loader.setConfig({
paths: {
'AMC.overrides': scriptsRoot + '/overrides',
}
});
我没有使用Sencha Builder(sench-cmd),但是上面的浏览器工作正常,它也适用于构建器。
显然,scriptsRoot
必须在HTML,JSP或用于提供应用程序的任何内容中定义为全局。这样的事情可能是:
<script type="text/javascript">
scriptsRoot = '${applicationHome}/js';
</script>
<script type="text/javascript" src="${applicationHome}/js/loaderConfig.js"></script>
<script type="text/javascript" src="${applicationHome}/js/app.js"></script>
使用requires
(或uses
)配置时,您应始终使用全名(例如AMC.overrides.whatever.ClassName
)。