2015-04-29 3 views
0

Я сделал два пользовательских элемента управления под названием «CustomControl_1» и «CustomControl_2».LightSwitch HTML-клиент: как получить содержимое/значение настраиваемого элемента управления?

В функции рендеринга «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 ?); 
}; 

ответ

0

Как и большинство вещей в разработке, вы можете добиться этого в ряде различных способов (всегда есть более чем один способ кожи кошки ;-).

Простейшим способом было бы кэшировать элемент, который вам интересен в отношении экранного объекта.

Этот кэшированный элемент может затем получить доступ, как показано в следующем примере, используя кэшированные элемент (_ $ 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 появляется после того, как CustomControl1 в дереве содержимого экрана LightSwitch например

Example of the LightSwitch screen content tree

Техническая сторона на SetTimeout подхода рассматриваются в следующей стека переполнения пост: -

'Why is setTimeout(fn, 0) sometimes useful?'

+0

Это работает! Спасибо за помощь. Хорошая техника! – user3862659

Смежные вопросы