LightSwitch HTML 客户端:如何获取自定义控件的content/value?
LightSwitch HTML Client: How to get the content/value of a custom control?
我创建了两个名为 "CustomControl_1" 和 "CustomControl_2" 的自定义控件。
在"CustomControl_1"的渲染函数中,如何访问"CustomControl_2"的值?
例如,
myapp.BrowseOrders.CustomControl_2_render = function (element, contentItem) {
$(element).text("Some Value");
};
myapp.BrowseOrders.CustomControl_1_render = function (element, contentItem) {
$(element).text( Value of CustomControl_2 ? );
};
与开发中的大多数事情一样,您可以通过多种不同的方式实现这一点(给猫剥皮的方式总是不止一种 ;-)。
最简单的方法是针对屏幕对象缓存您感兴趣的元素。
然后可以使用缓存元素 (_$element_CustomControl_2) 访问此缓存元素,如下例所示:-
myapp.BrowseOrders.CustomControl_2_render = function (element, contentItem) {
contentItem.screen._$element_CustomControl_2 = $(element);
$(element).text("Some Value");
};
myapp.BrowseOrders.CustomControl_1_render = function (element, contentItem) {
$(element).text("Value of CustomControl_2 is " + contentItem.screen._$element_CustomControl_2.text());
};
如果您需要引用的控件在您需要访问其值的点之后呈现,您可以将访问代码包装在 setTimeout 中以延迟访问,直到两个元素都呈现之后。
我怀疑在你的情况下这是必需的(如以下扩展示例所示):-
myapp.BrowseOrders.CustomControl_2_render = function (element, contentItem) {
contentItem.screen._$element_CustomControl_2 = $(element);
$(element).text("Some Value");
};
myapp.BrowseOrders.CustomControl_1_render = function (element, contentItem) {
setTimeout(function () {
$(element).text("Value of CustomControl_2 is " + contentItem.screen._$element_CustomControl_2.text());
});
};
如果 CustomControl2 在 LightSwitch 屏幕内容树中出现在 CustomControl1 之后,就会发生这种情况,例如
setTimeout 方法的技术细节包含在以下堆栈溢出 post 中:-
'Why is setTimeout(fn, 0) sometimes useful?'
我创建了两个名为 "CustomControl_1" 和 "CustomControl_2" 的自定义控件。
在"CustomControl_1"的渲染函数中,如何访问"CustomControl_2"的值?
例如,
myapp.BrowseOrders.CustomControl_2_render = function (element, contentItem) {
$(element).text("Some Value");
};
myapp.BrowseOrders.CustomControl_1_render = function (element, contentItem) {
$(element).text( Value of CustomControl_2 ? );
};
与开发中的大多数事情一样,您可以通过多种不同的方式实现这一点(给猫剥皮的方式总是不止一种 ;-)。
最简单的方法是针对屏幕对象缓存您感兴趣的元素。
然后可以使用缓存元素 (_$element_CustomControl_2) 访问此缓存元素,如下例所示:-
myapp.BrowseOrders.CustomControl_2_render = function (element, contentItem) {
contentItem.screen._$element_CustomControl_2 = $(element);
$(element).text("Some Value");
};
myapp.BrowseOrders.CustomControl_1_render = function (element, contentItem) {
$(element).text("Value of CustomControl_2 is " + contentItem.screen._$element_CustomControl_2.text());
};
如果您需要引用的控件在您需要访问其值的点之后呈现,您可以将访问代码包装在 setTimeout 中以延迟访问,直到两个元素都呈现之后。
我怀疑在你的情况下这是必需的(如以下扩展示例所示):-
myapp.BrowseOrders.CustomControl_2_render = function (element, contentItem) {
contentItem.screen._$element_CustomControl_2 = $(element);
$(element).text("Some Value");
};
myapp.BrowseOrders.CustomControl_1_render = function (element, contentItem) {
setTimeout(function () {
$(element).text("Value of CustomControl_2 is " + contentItem.screen._$element_CustomControl_2.text());
});
};
如果 CustomControl2 在 LightSwitch 屏幕内容树中出现在 CustomControl1 之后,就会发生这种情况,例如
setTimeout 方法的技术细节包含在以下堆栈溢出 post 中:-
'Why is setTimeout(fn, 0) sometimes useful?'