如何从 TVML textField 获取值?
How do you get the value from a TVML textField?
我正在尝试弄清楚如何使用 TVJS 从 TVML 中的 textField 中获取值,但我还没有找到任何关于它的文档,我不想等待文档更新。实际上并没有任何绑定到输入的模式,因为我确信除了登录服务之外,这是一个很少用例。我想我可以解析 Xml 但这看起来超级 hacky。
最后我自己弄明白了。我不得不使用 select 事件对象的回调,然后将文本元素传递给函数来处理事件。
function template() {
var template = "<document><formTemplate><textField id="email">Your email</textField><footer><button><text>Submit</text></button></footer></formTemplate></document>";
var parser = new DOMParser();
var doc = parser.parseFromString(template , "application/xml");
var email = doc.getElementById("email");
doc.addEventListener("select", function() { submit(email); });
}
function submit(textField) {
var keyboard textField.getFeature('Keyboard');
var email = keyboard.text;
}
获得节点后,我使用 apple TVJS 函数 getFeature('Keyboard') 从该对象获取文本值。
由于某种原因,这个解决方案对我不起作用,但我找到了另一个:
var sender = event.target;
var formTemplate = sender.parentNode.parentNode;
var children = formTemplate.childNodes;
var textField = children.item(1); // replace "1" with the index of "textField" element in your template
var inputValue = textField.getFeature("Keyboard").text;
我正在尝试弄清楚如何使用 TVJS 从 TVML 中的 textField 中获取值,但我还没有找到任何关于它的文档,我不想等待文档更新。实际上并没有任何绑定到输入的模式,因为我确信除了登录服务之外,这是一个很少用例。我想我可以解析 Xml 但这看起来超级 hacky。
最后我自己弄明白了。我不得不使用 select 事件对象的回调,然后将文本元素传递给函数来处理事件。
function template() {
var template = "<document><formTemplate><textField id="email">Your email</textField><footer><button><text>Submit</text></button></footer></formTemplate></document>";
var parser = new DOMParser();
var doc = parser.parseFromString(template , "application/xml");
var email = doc.getElementById("email");
doc.addEventListener("select", function() { submit(email); });
}
function submit(textField) {
var keyboard textField.getFeature('Keyboard');
var email = keyboard.text;
}
获得节点后,我使用 apple TVJS 函数 getFeature('Keyboard') 从该对象获取文本值。
由于某种原因,这个解决方案对我不起作用,但我找到了另一个:
var sender = event.target;
var formTemplate = sender.parentNode.parentNode;
var children = formTemplate.childNodes;
var textField = children.item(1); // replace "1" with the index of "textField" element in your template
var inputValue = textField.getFeature("Keyboard").text;