2015-06-23 5 views
-3

В основном у меня есть объект, который нужно передать интерфейсу. Я зарегистрировал его в бэкэнд, и он не был нулевым, но в интерфейсе, когда я его предупреждал, он становится нулевым.Шаблон проходит не-nil объект становится nil in frontend

... 
presentation := &presentationStruct { 
    Object: object, 
} 
log.Errorf("%v", object) // not null 
template.Execute(writer, presentation) 
... 

// but it becomes null here 
alert({{.Object}}) 

Объект представляет собой тип

map[string]map[string]struct { 
    []float32 
    map[int][]struct { 
    string 
    float32 
    } 
} 

Является ли это потому, что тип является слишком сложным?

+0

Вы не должны оставлять '{{.Object}}' это не волшебство. Вам нужно, чтобы в вашем шаблоне выполнялись операции над ним, прокручивайте карту, чтобы вы могли отображать фактический текст, а не структуру. Вы можете, например, сделать что-то вроде этого '{{.Object ['foo'] ['bar'] [0]}}' (Это просто пример, вам нужно получить доступ к данным, содержащимся в вашем объекте) – Depado

+0

@ Depado Я знаю, что мне нужно отобразить фактический текст, но если объект имеет нулевое значение, как вы ссылаетесь на что-то – Haha

+0

@ Dave C см. Этот пример http://play.golang.org/p/s8hOuzI-3F – Haha

ответ

0

Нет, не имеет значения, что тип сложный. Шаблон не предназначен для передачи структуры из бэкэнда в «Перейти к интерфейсу» в JavaScript. Это просто замена строки, замена строк в шаблоне с переменными в Go и передача окончательной строки.

+0

Если это так, как этот пример работает http://play.golang.org/p/s8hOuzI-3F – Haha

+0

Абстракция может делать больше, чем просто строки строк для строк ... Это не принесло бы большого значения, если это все, что он сделал. Зачем вообще беспокоиться о библиотеке, если не делает ничего, кроме старой доброй строки. – evanmcdonnal

+0

замена, а не означает замену ОДНОЙ строки на ДРУГОЙ, как и string.replace. Возможно, шаблон предназначен для создания строк, говоря лучше. –

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

  • Нет связанных вопросов^_^