是的!你可以在你的TVML模板中注入變量。
首先,您必須創建一個包含相同TVML模板的字符串,並使用${variable}
來注入值。 然後,使用DOMParser對象將此字符串轉換爲XML DOM元素。 最後,介紹該文件與presentModal方法(主要被攝體navigationDocument)的幫助下
你的函數看起來就像這樣:
function catalogTemplate(title, firstMovie, secMovie) {
var xmlStr = `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<catalogTemplate>
<banner>
<title>${title}</title>
</banner>
<list>
<section>
<listItemLockup>
<title>All Movies</title>
<decorationLabel>2</decorationLabel>
<relatedContent>
<grid>
<section>
<lockup>
<img src="http://a.dilcdn.com/bl/wp-content/uploads/sites/2/2014/03/Maleficent-Poster.jpg" width="250" height="376" />
<title>${firstMovie}</title>
</lockup>
<lockup>
<img src="http://www.freedesign4.me/wp-content/gallery/posters/free-movie-film-poster-the_dark_knight_movie_poster.jpg" width="250" height="376" />
<title>${secMovie}</title>
</lockup>
</section>
</grid>
</relatedContent>
</listItemLockup>
</section>
</list>
</catalogTemplate>
</document>`
var parser = new DOMParser();
var catalogDOMElem = parser.parseFromString(xmlStr, "application/xml");
navigationDocument.presentModal(catalogDOMElem);
}
PS:我用目錄模板爲例。您可以使用任何template
在onLaunch函數中,您可以通過傳遞任何變量來調用catalogTemplate函數。
App.onLaunch = function(options) {
catalogTemplate("title", "Maleficent.", "The Dark knight");
}
您可以添加一個監聽器,並通過一個功能移動到另一個頁面或使用addEventListener
function catalogTemplate(title, firstMovie, secMovie, cb) {
var xmlStr = `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<catalogTemplate>
<banner>
<title>${title}</title>
</banner>
<list>
<section>
<listItemLockup>
<title>All Movies</title>
<decorationLabel>2</decorationLabel>
<relatedContent>
<grid>
<section>
<lockup>
<img src="http://a.dilcdn.com/bl/wp-content/uploads/sites/2/2014/03/Maleficent-Poster.jpg" width="250" height="376" />
<title>${firstMovie}</title>
</lockup>
<lockup>
<img src="http://www.freedesign4.me/wp-content/gallery/posters/free-movie-film-poster-the_dark_knight_movie_poster.jpg" width="250" height="376" />
<title>${secMovie}</title>
</lockup>
</section>
</grid>
</relatedContent>
</listItemLockup>
</section>
</list>
</catalogTemplate>
</document>
`
var parser = new DOMParser();
var catalogDOMElem = parser.parseFromString(xmlStr, "application/xml」);
catalogDOMElem.addEventListener("select", cb, false);
navigationDocument.presentModal(catalogDOMElem);
}
觸發一個動作讓我們創建另一個模板,只是爲了展示我們如何通過選擇一個跳轉到另一個頁面具體項目。
function ratingTemplate(title) {
var xmlStr = `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<ratingTemplate>
<title>${title}</title>
<ratingBadge value="0.8"></ratingBadge>
</ratingTemplate>
</document>`
var parser = new DOMParser();
var ratingDOMElem = parser.parseFromString(xmlStr,"application/xml");
navigationDocument.presentModal(ratingDOMElement);
}
在我們的onLaunch函數中。
App.onLaunch = function(options) {
catalogTemplate("title", "Maleficent.", "The Dark knight", function() {
navigationDocument.dismissModal();
ratingTemplate(「rating template title")
});
}
檢查此列表以獲取更多tutorials。
太棒了,非常感謝!我會給它一個去.. – user3331252
爲了將來的其他人蔘考,不要忘了標記這是正確的答案,如果你覺得有幫助。 – Taha
我當然會,如果我知道如何..我試圖upvote的答案,並得到一個消息,我的聲譽不夠高。這很有趣 - 堆棧溢出是我的生活,但直到現在我從來沒有問過一個問題,所以從來沒有一個帳戶。 – user3331252