我想在外部调用钩子方法 onBeforeRendering 和 onAfterRendering 。我的要求是,当我的3/4 ajax调用完成时,我正在渲染UI部分,之后我需要调用这两种方法。
答案 0 :(得分:1)
如上所述,我认为您的架构是错误的。我会建立这样的东西:
var self = this;
$.ajax(firstURL, {
method: "GET",
contentType: "application/json",
}).fail(function(response) {
// handle error
}).done(function(data) {
// do something with the returned data from first call
$.ajax(secondURL, {
method: "GET",
contentType: "application/json",
}).fail(function(response) {
// handle error
}).done(function(data) {
// do something with the returned data from second call
$.ajax(thirdURL, {
method: "GET",
contentType: "application/json",
}).fail(function(response) {
// handle error
}).done(function(data) {
// build extra UI elements, for example:
var someContainer = self.getView().byId("myContainer"); // ui element where you add more controls
someContainer.addContent(new com.initrode.MyCustomControl({
value : data.someProperty,
change : self.doSomething
}));
});
});
});
如你所见:
onBeforeRendering/AfterRendering
change
),因此无需额外的事件注册答案 1 :(得分:0)
正如@Qualiture在评论中所说,你不能将这些方法称为钩子,在呈现控件之前和之后由框架调用。
然而,您可以“询问”重新呈现控件,然后通过调用oControl.rerender()
或oControl.invalidate()
答案 2 :(得分:0)
我不知道你是否可以为你的场景做到这一点,但在类似的情况下,我能够即时切换渲染(一旦控件所需的所有ajax调用都完成,通过在应用程序中利用模型绑定来呈现控件。
即如果控件需要加载某些“数据”对象,请将控件绑定到将由ajax调用更新的模型“/ data”,并使用类似{= $ {/ data的内容来管理控件可见属性} || false}
实际上,这在某种程度上依赖于框架在检测到模型中的更改时调用控件的渲染器函数。