2013-02-18 5 views
1

Я использую дротик для разработки приложения, и я хочу получить значение элемента с щелчком. То есть:Как получить текстовый контент с нажатым элементом с помощью Dart?

Html:

<div id="blah">Value!!</div> 

Dart:

void main(){ 
    query("#blah").onClick.listen(showValue); 
} 

void showValue(Event e){ 
    //Get #blah's innerHtml based on the Event(Something like e.target.innerHtml or e.target.value) 
} 

Кто-нибудь? Я знаю, как это сделать в JS, но я хочу знать, есть ли способ сделать это в DART!

Редактировать

Благодаря всем вам, я постараюсь быть немного более ясным. У меня есть цикл, который динамически генерирует 9 элементов и добавляет их в контейнер.

Код:

var j = 0; 
    var optionsSquare = query("#optionsPanel"); 
    while(j < 9){ 
     DivElement minorSquare = new DivElement(); 

     var minorSquareHeight = optionsSquare.clientHeight/3; 
     var minorSquareWidth = optionsSquare.clientWidth/3; 

     minorSquare 
     ..attributes = {"class": "miniSugg"} 
     ..style.width = (minorSquareWidth.round()-2).toString().concat("px") 
     ..style.height = (minorSquareHeight.round()-2).toString().concat("px") 
     ..style.float = "left" 
     ..style.border = "1px solid" 
     ..innerHtml = (j+1).toString(); 
     ..onClick.listen(showOptionsSquare); 

     optionsSquare.children.add(minorSquare); 
     j++; 
    } 

Если я попробовать использовать @ путь Pandian, он работает, но я только получить значение последнего элемента внутри цикла. То, что я хочу, так или иначе, отслеживать элемент, щелкнув и получить его значение!

EDIT 2

Ребята, просто решили его!

Я дам код здесь как репо, если кто-то нуждается в этой информации:

void showOptionsSquare(Event e){ 
    window.location.hash = "#optionsPanel"; 
    mainDiv.style.opacity = (0.2).toString(); 

    DivElement clicked = e.target; 
    window.alert(clicked.innerHtml); 
} 

[] s

+0

См: http://stackoverflow.com/questions/10670173/get-value-of-selected-select-element-in -dart – Wezelkrozum

+0

Не совсем то, что я хотел, но всегда приятно иметь больше знаний об этой проблеме, спасибо;) –

ответ

1

Try, как показано ниже ... это поможет вам ...

DivElement div; 

void showValue(){ 
     window.alert(div.innerHTML); 
} 

void main() { 
    div = query('#blah'); 
    div.on.click.add((Event e) => showValue()); 
} 
+0

Спасибо вам большое! Не работает так, как я хотел, потому что я привязываю события click в элементах, созданных в цикле, поэтому он получает только последний элемент, созданный значением цикла, но вы дали мне хорошее направление, спасибо вам большое! –

4

Использование примеров кода вы могли бы просто написать

print(e.target.innerHtml); 

внутри вашего showValue функция и все будет работать. У вас есть ошибка или что-то еще? Если вы беспокоитесь о предупреждении вы можете добавить бросок к Element или DivElement:

print((e.target as Element).innerHtml); 
+0

Не работает. Это бросает мне «NoSuchMethodException» –

+0

Что именно делает ваше исключение? Ваш другой пример отлично подходит для меня. Я использую версию редактора, но я не думаю, что это имеет значение. –

+0

StackTrace: ** Исключение: NoSuchMethodError: метод не нашел: 'значение' Получатель: экземпляр 'DivElement' Аргументы: [] Трассировка стека: # 0 Object.noSuchMethod (дротика: ядро-патч: 1746: 25) # 1 showOptionsSquare.showOptionsSquare (http: //127.0.0.1: 3030/C: /Users/avaz/dart/sudoku_trial/web/out/sudoku_trial.dart: 93: 25) ** –