我想让这个小部件显示http://localhost:8080/webapp/trending页面上的内容,无论我在哪里:
<div data-dojo-type="js/widget/SATrending"></div>
现在它没有将内容加载到页面上,我不确定我错过了什么。
JS(js / widget / SATrending):
require([
"dojo/_base/declare",
"dojo/dom-construct",
"dojo/parser",
"dojo/ready",
"dijit/_WidgetBase",
"dojo/request"],
function(declare, domConstruct, parser, ready, _WidgetBase, request) {
declare("js/widget/SATrending",[_WidgetBase], {
top: 10,
constructor: function() {
},
postMixInProperties: function() {
},
buildRendering: function() {
var txt;
request("http://localhost:8080/webapp/trending").then(
function(text) {
txt: text;
},
function(error) {});
this.domNode = txt;
},
/*
* Setters
*/
setTopAttr: function(top) {
this.top = top;
},
postCreate: function() {
},
startUp: function() {
}
});
});
答案 0 :(得分:0)
你有几个问题。首先,在您的成功回调中,txt: text
不是有效的JavaScript。其次,您可能希望将txt
分配给this.domNode.innerHTML
,而不仅仅是this.domNode
。
但最重要的是,this.domNode = txt;
永远不会做你可能期望的事情,因为txt
实际上并未实际更新,直到请求异步完成,但是您在发送请求后立即设置this.domNode
。
以下是将buildRendering
代码重组为实际应用的内容的示例:
this.inherited(arguments);
var self = this;
request("http://localhost:8080/webapp/trending").then(
function(text) {
self.domNode.innerHTML = text;
},
function(error) {});
有关您的代码的其他说明:
this.inherited(arguments)
。 (默认为constructor
个链,因此您不应该在那里调用它。)startup
应该有一个小写的u。href
属性来更轻松地完成您在此处尝试的操作。