2015-05-15 2 views
0

Итак, у меня есть страница азота, index.erl, который содержит коды, как это:содержания азота прибудет таблицы

body() -> 
    [#table{ 
    id = mytable, 
    rows=[ 
      #tablerow{ 
       cells=[#tableheader{text="column a"}, 
        #tableheader{text="column b"}, 
        #tableheader{text="column c"}, 
        #tableheader{text="column d"}] 
      }, 
      #custom_row{ %% just a wrapper around #tablerow 
       column_a = "a", 
       column_b = "b", 
       column_c = "c", 
       column_d = "d" 
      } 
      %% ... more #custom_rows omitted 
      ] 
    }, 
    #button{text="submit", postback=store_table} 
    ]. 

event(store_table) -> 
    TableData = something_like_querySelector(mytable), 
    insert_into_database(TableData). 

Как получить содержание mytable, делает азот имеет что-то вроде querySelector?

ответ

1

Существует не что-то приятное и чистое, как querySelector, но можно получить содержимое произвольного элемента DOM, хотя использование Nitrogen's #api{} action.

Используя код выше, мы могли бы сделать следующее:

body() -> 
    wf:wire(#api{name=send_table_contents, tag=some_tag}), 
    [#table{ 
    id = mytable, 
    rows=[ 
      #tablerow{ 
       cells=[#tableheader{text="column a"}, 
        #tableheader{text="column b"}, 
        #tableheader{text="column c"}, 
        #tableheader{text="column d"}] 
      }, 
      #custom_row{ %% just a wrapper around #tablerow 
       column_a = "a", 
       column_b = "b", 
       column_c = "c", 
       column_d = "d" 
      } 
      %% ... more #custom_rows omitted 
      ] 
    }, 
    #button{text="submit", click="page.send_table_contents(objs('mytable').html())"} 
    ]. 

api_event(send_table_contents, some_tag, [TableHTML]) -> 
    insert_into_database(TableHTML). 

Это не так чист, как быть в состоянии запросить содержимое, как вы можете с wf:q, но это получить работу.

Быстрое объяснение здесь является то, что #api{} действие создает новую функцию на странице под названием page.api_name_attribute (так что если вы смотрите выше, вы увидите атрибут имени send_table_contents и Javascript функция, вызываемая в #button.click также send_table_contents. затем содержимое захвачена в функции api_event(NameOfAPI, Tag, ListOfArgs) обратной передачи.

Тем не менее, я добавил эту функцию в списке дел, потому что кажется, как полезная вещь.

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