我有一个CheckBox,其处理程序附加到select
事件。此功能是动态填充/显示少量字段的代码。如果我出现在屏幕上,并且数据带来的值已经使该复选框处于选中状态,则这些字段将不会显示(因为只有当我选中该复选框时它们才可见)。
我想确保如果自动选择了CheckBox,我仍然应该能够处理函数中的逻辑,该函数具有oEvent
作为输入参数。但是问题是,如果我从另一个方法调用此函数,则该函数将不起作用,因为它有很多类似oEvent().getSource()
的语句,但我没有通过。
onCheckBoxSelect: function(oEvent) {
var cells = sap.ui.getCore().byId("cell");
controlCell.destroyContent();
vc.abc();
var material= sap.ui.getCore().byId("abc");
var isSelected = oEvent.getParameters("selected").selected;
if (isSelected) {
// ...
}
},
someFunction : function(){
if(true){
// want to call onCheckBoxSelect here
}
// ...
},
答案 0 :(得分:1)
如果您为复选框分配了ID,则只要您在视图中知道该功能,就可以在所需的任何功能中使用该复选框。这样,您将不需要仅在执行复选框上的事件时可用的oEvent。
示例:
import boto3
import logging
#setup simple logging for INFO
logger = logging.getLogger()
logger.setLevel(logging.INFO)
#define the connection
ec2 = boto3.resource('ec2')
def lambda_handler(event, context):
# Use the filter() method of the instances collection to retrieve
# all running EC2 instances.
filters = [{
'Name': 'tag:AutoOff_uat',
'Values': ['True']
},
{
'Name': 'instance-state-name',
'Values': ['running']
}
]
#filter the instances
instances = ec2.instances.filter(Filters=filters)
#locate all running instances
RunningInstances = [instance.id for instance in instances]
#print the instances for logging purposes
#print RunningInstances
#make sure there are actually instances to shut down.
if len(RunningInstances) > 0:
#perform the shutdown
shuttingDown = ec2.instances.filter(InstanceIds=RunningInstances).stop()
print shuttingDown
else:
print "Nothing to see here"
答案 1 :(得分:0)
我建议采用另一种方法。使用您在复选框绑定中使用的相同属性来确定其他字段的可见性,即将每个相关字段的visible
属性绑定到模型中的该属性。
如果在填充字段时需要进行其他后期处理,则可以使用expression binding或custom formatter进行特定于字段的处理,或者使用model binding events进行一些处理更多的“分期”工作(在这种情况下,您可能会将结果数据存储在客户端模型中,并绑定到该模型中以填充字段)。
答案 2 :(得分:0)
将处理程序主体解耦为单独的函数,以便其他函数可以使用正确的参数调用解耦的函数。例如:
onCheckBoxSelect: function(oEvent) {
const bSelected = oEvent.getParameter("selected");
this.doIt(bSelected); // Instead of "doing it" all here
},
someFunction: function(){
if (/*Something truthy*/) {
const checkBox = this.byId("myCheckBox");
const bSelected = checkBox.getSelected();
doIt(bSelected); // passing the same argument as in onCheckBoxSelect
}
// ...
},
doIt: function(bSelected) { // decoupled from onCheckBoxSelect
// ...
if (bSelected) {
// ...
}
},
<CheckBox id="myCheckBox"
select=".onCheckBoxSelect"
/>
或者从1.56开始:
<CheckBox id="myCheckBox"
select=".doIt(${$parameters>/selected})"
/>
文档:Handling Events in XML Views
这样,您就可以拥有可以在任何地方调用的纯解耦函数。