Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dojo只更新模板的一部分_Dojo - Fatal编程技术网

Dojo只更新模板的一部分

Dojo只更新模板的一部分,dojo,Dojo,我创建了一个基于小部件的模板,比如 <div class="content"> <div> <!-- rest of content--> </div> <div class="col-md-6"> <div class="panel" data-dojo-attach-point="sysinfo"> <ul class="col

我创建了一个基于小部件的模板,比如

<div class="content">
    <div>
        <!-- rest of content-->
    </div>
    <div class="col-md-6">
        <div class="panel" data-dojo-attach-point="sysinfo">
                <ul class="col-md-12 stats">
                    <li class="stat col-md-3 col-sm-3 col-xs-6">Host:</br> <span><b class="value">{{hname}}</b></span>
                    </li>
                    <li class="stat col-md-3 col-sm-3 col-xs-6"># CPU:</br> <span><b class="value">{{cpu}}</b></span>
                    </li>
                </ul>
        </div>
    </div>
 </div>
我也试过,

template.update(this.sysinfo, stats); // but it throws exceptions

有什么想法吗?

据我所知,当您使用文档中建议的
dojox/dtl/\u模板化的
时,没有可用的
update()
函数

如果确实需要某些内容,则必须手动定义模板并渲染该模板(并替换附着点),例如:

var subtemplate=“
    {%for list%}
  • {{{item}}
  • {%endfor%}
”; var template=“{title}}”+子模板+”; var CustomList=declare(“custom/List”,[\u WidgetBase,\u Templated,\u domtplated]{ templateString:template, 子模板:新的dtl.模板(子模板), 标题:“水果”, 列表:[“苹果”、“香蕉”、“柠檬”], _setListAttr:函数(列表){ this.list=列表; this.sysinfo=domConstruct.place(this.subTemplate.render(new dtl.Context(this)),this.sysinfo,“replace”); }, _getListAttr:函数(列表){ 返回此.list; } });
通常,如果要在设置列表时更新模板,可以在
\u setListAttr()
函数中使用
this.render()
来更新整个模板

但是,正如您在
\u setListAttr()
函数中看到的,我正在用新呈现的Django模板替换附着点

这只会更新模板的一部分,而不是整个模板。因此,
{{title}}
将保持原始值,即使更改


可以在JSFiddle上找到完整的示例:

在小部件代码中,您需要设置setter函数,请参阅以了解详细信息,然后使用setter函数更新sysinfo内容。sysinfo将作为widge代码中的变量提供。然后,在setter函数中,您可以使用如下内容,例如
\u setSysinfo:function(argument){sysinfo.innerHtml=argument}
。setter函数将被调用,例如
widget.Sysinfo(stats)
@frank cant我们不能
模板。更新(节点、上下文)
模板只有在解析器解析后才可用。解析器将模板转换为DOM节点。没有更新这样的方法来更新模板。attach point属性允许您指定解析器在创建小部件时将创建的变量的名称,该变量可用于制造。你看过上一篇评论中提供的链接了吗?@frank???。你也可以在这里看一下,你能不能请看一下@这个函数确实存在于
dojox/dtl/Template
上,但是当你使用小部件时,您继承的是
dojox/dtl/_Templated
,它自动化了模板呈现,并且没有对实际模板的引用。因此,您没有有效的模板可供使用,因为它集成在
dojox/dtl/_Templated
模块中,当您使用
dojox/dtl
定义小部件时,应该使用该模块。我需要您的一些帮助。您可以加入我的聊天吗?我已经为我们创建了一个聊天室,我正在聊天,但是,我不知道
dojox/dtl
,因此如果您需要帮助,我恐怕无法进一步帮助您。
template.update(this.sysinfo, stats); // but it throws exceptions