我正在使用多个磁贴的仪表板上工作。每个磁贴都是XML视图。首先,每个平铺视图应该被创建一次,但由于一些新的要求,用户应该能够使用不同的配置多次添加相同的平铺。
为实现这一目标,我只是尝试创建一个这样的视图:
sap.ui.xmlview({
viewName: "com.sap.tiles." + selectedTile + "." + selectedTile
});
瓷砖正确显示,但似乎它使用与现有同类型瓷砖完全相同的控制器。每个变量都已在控制器中设置。是否可以实例化一个新的控制器?
我已经读过在一个窗口(使用不同的控制器实例)中多次使用相同的视图是不可能的,而应该使用组件或片段。是真的,还是我做错了什么?
最终编辑:
我解决了我的问题。这是我的代码非常具体的问题,导致错误的函数调用。 Boghyon Hoffmanns的回答帮助我找到了解决方案。
答案 0 :(得分:0)
瓷砖正确显示,但似乎它使用与现有同类型瓷砖完全相同的控制器。每个变量都已在控制器中设置。
您可能在模块定义之外的闭包中声明了变量。
sap.ui.define([
"sap/ui/core/mvc/Controller",
// ...
], function(Controller /*, ...*/){
"use strict";
var something; // Visible to all Controller instances of the same name
return Controller.extend("com.sap.tiles...", {
onInit: function() {
something = 1; // Applies to all Controller instances of the same name
this.something = 0; // Applies to this instance only
},
});
});
多次创建相同的视图不多次获取相应的Controller(因为模块已经定义),但 实例化模块(Controller)每次创建视图时。