我想从我的一个组件控制器中为我的SAPUI5组件设置一个jsonModel。在组件内,我正在使用应用程序或splitapp。

我想避免通过其ID获取元素。从组件中的某个位置获取层次结构中最接近的“ __ComponentX”对象的最佳方法是什么,所以不管我深入到多少级别的“ oParent”,该方法都有效,以便可以在每个组件中使用相同的功能?

我是否应该要求对象返回一个oParent,只要它不返回null,还是有一种更快的方法可以减少运行时的时间?

请让我澄清一下:我不希望我的子组件更改我的父组件,但是我正在谈论组件中的DOM树层次结构。我的DOM树从上到下如下(通过sId):__component0, __jsview0, __app0, __app0-Master, __jsview1.无论我是从__component0还是__jsview0, __app0调用__jsview1,我都希望有一个函数可以访问。

最佳答案

每个组件都应该在自己的沙箱中玩耍。因此,子组件不应该负责达到并设置其父代的模型。如果组件紧密耦合或确实必要,则此类通信应通过事件进行处理。例如

// Fire ModelNeeded event on the control tree to inform responsible component
this.fireEvent("ModelNeeded", { modelName : "whatever" }, false, true);


和componentX应该听它。

this.attachEvent("ModelNeeded", function(oEvent) {
     var sModelName = oEvent.getParameter("modelName");
     var oModel = createModel();
     this.setModel(oModel, sModelName);
     oEvent.stopPropagation();
});

关于javascript - 比this.View.Parent.Parent.oParent.oParent.setModel(foo,bar)更好的方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27686394/

10-09 21:02