在用作对话的片段中,通常有一个取消或关闭按钮与按下事件连接。例如:
<buttons>
<Button text="Save" press="onSaveData" type="Accept"/>
<Button text="Cancel" press="onCancelBtn" type="Reject"/>
</buttons>
我有几个对话框出现在我正在处理的当前视图中。我想构造onCancelBtn()
事件函数是通用的,所以有一个关闭函数,片段传递和关闭 - 我假设片段可以从事件参数访问,但是如何? .getView()
会不会触及主视图?
以下是我目前的功能,但这是指特定的对话。
onCancelBtn: function(oEvent){
this._oConfirmDialog.close();
},
如何使用oEvent获取对我要关闭的片段的引用?如果有人能指出我关于oEvent的文档,那么我可以阅读它的结构,我将不胜感激。我得到了API文档中的EventProvider但却失去了那条路径。
答案 0 :(得分:2)
完全通用的方法是使用方法 getParent 和 getMetadata 从触发事件的按钮遍历控制树到顶部,直到到达包含对话框控件你想要关闭
我更喜欢的另一种方法是以下方法。声明一个自定义数据属性,该属性包含在取消按钮处保存对话框实例的属性的名称,并在通用事件处理程序中评估此属性。
lestfreq=list(next(itertools.groupby(c.most_common()[::-1], key=lambda x:x[1]))[1])
您可以在事件处理程序中访问此自定义数据属性:
<Button data:name="MyDialog" text="Cancel" press="onCancelDialogPressed" type="Reject"/>
如果您像这样实例化对话框,则此方法有效。您将片段存储在custom属性声明的名称下。
onCancelDialogPressed : function(event) {
var name = event.getSource().data("name");
if (this.fragments[name]) {
this.fragments[name].close();
}
}
当然,您需要在控制器中声明片段,例如在 onInit :
openDialogPressed : function(event) {
if (!this.fragments.MyDialog) {
this.fragments.MyDialog = sap.ui.xmlfragment("..")
this.getView().addDependent(this.fragments.MyDialog);
}
this.fragments.MyDialog.open();
}
答案 1 :(得分:1)
有一种更好更清洁的方法 - 在关闭事件中写下面的代码:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <ArduinoJson.h>
#include <BlynkSimpleEsp8266.h>
String json;
char auth[] = "";
char ssid[] = "YourNetworkName";
char pass[] = "YourPassword";
BLYNK_WRITE(V0) {
json = param.asStr();
}
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
Blynk.virtualWrite(V0, "https://api.bot-dev.org/time/");
JsonObject& root = jsonBuffer.parseObject(json);
long time = root[String("ENtime")];
}