2015-12-05 2 views
0

Привет Я использую JSNI в GWT, чтобы использовать код javascript. У меня есть виджеты, определенные в UiBinder (file.ui.xml):Изменение текста виджетов через JSNI

<g:Label ui:field="LBLMsg" text="mytext" styleName="{style.conceptMessage}" width="1800px"/> 

, чем я использовал этот ярлык в моем файле Java с помощью следующего кода:

@UiField этикетки LBLMsg;

он отлично работает, я могу использовать ярлык виджета и может изменять текст, используя LBLMsg.setText («sometex») , однако моя проблема начинается, когда я передаю ее в мою функцию JSNI, чтобы использовать ее в некотором коде JAVAScript. я хотел бы изменить текст этой метки с помощью Java-скрипт, для этого я использовал следующий код:

void TestWritingLabelFromJSNI() 
     { 
     writeGWTLabel(LBLMsg.getElement()); 

     } 
    private native void writeGWTLabel(Element elt)/*-{ 

    var labelelement = document.getElementById('LBLMsg'); 
    alert("Element labelelement ;"+labelelement); 

     }-*/ 

, когда я называю это возвращение labelelement нуля. и поэтому я не могу установить его текст. Я не уверен, что делаю. может кто-нибудь предложить что-нибудь. действительно ценят любую помощь. уже было слишком много времени без каких-либо успехов.

ответ

0

Все, что вам нужно сделать, это:

private native void writeGWTLabel(Element elem, String text)/*-{ 
    // Remove all children first. 
    while (elem.firstChild) { 
     elem.removeChild(elem.firstChild); 
    } 
    // Add a new text node. 
    if (text != null) { 
     elem.appendChild(elem.ownerDocument.createTextNode(text)); 
    } 
}-*/ 
+0

я попытался это, но это не сработало. со следующей ошибкой: Uncaught com.google.gwt.event.shared.UmbrellaException: Exception catch: (TypeError): elt_0_g $ .setInnerText не является функцией – Nhqazi

+0

спасибо .it работал для меня. Однако он добавил текст не в виджет метки, а в добавленный узел. Я хочу добавить текст в виджет метки, который я передал jsni. внутренний текст не дает никаких рекомендаций. – Nhqazi

+0

Когда вы вызываете label.setText (""), этот родной метод вызывается под капотом. –

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