2

当我们为 dojo 创建自定义构建时,它还将各种小部件的 html 模板内化到该小部件的 js 文件中。

对于 EnhancedGrid 的 Filter 插件,直到 1.8.0 才出现上述情况,并在 1.8.1 中修复。我已经使用 dojo 1.8.0 编写了我的应用程序。

在使用 dojo 1.8.0 时,是否有任何解决方法可以让增强网格过滤器插件的 html 模板内部化

4

1 回答 1

1

1.8.0和1.8.1的未压缩过滤器js文件有一个简单的区别,就是这一行(例如在FilterBar.js中):

"dojo/text!../../templates/FilterBar.html"

如果您查看 1.8.1:

define([
    "dojo/_base/declare",
    "dojo/_base/array",
    "dojo/_base/connect",
    "dojo/_base/lang",
    "dojo/_base/sniff",
    "dojo/_base/event",
    "dojo/_base/html",
    "dojo/_base/window",
    "dojo/query",
    "dijit/_Widget",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dojo/fx",
    "dojo/_base/fx",
    "dojo/string",
    "dijit/focus",
    "dojo/text!../../templates/FilterBar.html" // HERE HERE HERE HERE HERE HERE
], function(declare, array, connect, lang, has, event, html, win, query, _Widget,
    _TemplatedMixin, _WidgetsInTemplateMixin, fx, baseFx, string, dijitFocus,
 template){ // HERE HERE HERE HERE - NOTICE THE MAPPING ...

之后,如果您查看 1.8.0 FilterBar.js:

define("dojox/grid/enhanced/plugins/filter/FilterBar", [
    "dojo/_base/declare",
    "dojo/_base/array",
    "dojo/_base/connect",
    "dojo/_base/lang",
    "dojo/_base/sniff",
    "dojo/_base/event",
    "dojo/_base/html",
    "dojo/_base/window",
    "dojo/cache",
    "dojo/query",
    "dijit/_Widget",
    "dijit/_TemplatedMixin",
    "dijit/_WidgetsInTemplateMixin",
    "dojo/fx",
    "dojo/_base/fx",
    "dojo/string",
    "dijit/focus"
], function(declare, array, connect, lang, has, event, html, win, cache, query, 
    _Widget, _TemplatedMixin, _WidgetsInTemplateMixin, fx, baseFx, 
    string, dijitFocus){...

1.8.0 中没有这样的行,所以在必要的未压缩过滤器 js 文件中添加这一行并创建一个新的 build 。

您必须对运行时加载的所有 html 文件执行此操作:

/dojox/grid/enhanced/templates/FilterBar.html
/dojox/grid/enhanced/templates/FilterDefPane.html
/dojox/grid/enhanced/templates/CriteriaBox.html
/dojox/grid/enhanced/templates/FilterBoolValueBox.html

我从你之前的问题中得到了这个列表:

增强网格过滤器插件的 Dojo AMD 样式模板

于 2013-04-16T06:48:20.130 回答