2014-09-24 2 views
1

Я использую nexusUI для проекта и хотел бы использовать шаблоны, но обнаружил, что они, кажется, не отображаются. Полагаю, это из-за недостающего контекста canvas, но я не совсем уверен, как это сделать ... Любые указатели?Виджеты nexusUI внутри шаблона jQuery

Вот код, который иллюстрирует проблему:

<!-- This renders fine, as expected --> 
<div> <canvas nx='button'></canvas> </div> 

<!-- this is my rendering container --> 
<div class="nxContainer"></div> 
<!-- and a template that should contain a "dial" widget --> 
<script type="text/html" id="test"> 
    <div data-content="widget"> </div> 
</script> 

<!-- counter example to make sure that loadTemplate is actually working --> 
<div class="Container"></div> 
<script type="text/html" id="test2"> 
    <div data-content="text"> </div> 
</script> 

$(function() { 

    var nxus = { 
     widget: "<canvas nx='dial'></canvas>", 
     text: "Boo!" 
    } 
    $(".nxContainer").loadTemplate("#test", nxus); 
    $(".Container").loadTemplate("#test2", nxus); 

}); 

http://jsfiddle.net/745vhffb/4/

редактировать: Так после того, как ковыряться еще немного и глядя через исходный код библиотеки nexusUI, это выглядит, как я нашел решение, и я обновил свою скрипку, которая теперь находится в редакции № 9 (я превысил свою квоту для публикации ссылок).

nx.elemTypeArr.push("myslide"); 
var mySlider = "myslide"; 
var x = new slider('myslide'); 
x.init(); 

Так в основном, это выглядит, как я должен позаботиться о регистрации нового виджета с пм и инстанцированием его.

+0

Hi djiamnot, извините, я пропустил это, когда вы впервые его попросили. Да, версия nexusUI вы использовали только найденные холсты, которые находятся на странице при запуске window.onload. Новейшая версия nexusUI, однако, имеет метод 'nx.add (« dial »)', который позволяет динамически добавлять виджеты на вашу страницу в любое время. Эта версия ** nexusUI 1.0 ** была выпущена в декабре на [nexusosc.com] (http://nexusosc.com) – suncannon

ответ

0

Так вот полное решение моей проблемы:

function instantiateWidget(container, template, widgetType, id, destination){ 
    var sub = { 
     widget: "<canvas nx='" + widgetType + "' id='" + id + "'></canvas>" 
    } 
    $(container).loadTemplate(template, sub); 
    nx.elemTypeArr.push(id); 
    eval(id + " = new " + widgetType + "('" + id + "', " + destination + ");"); 
    eval(id + ".init();"); 
} 

, а затем

instantiateWidget("#nxContainer", "#test", "dial", "local"); 

и это будет заполнить контейнер с шаблоном:

<div id="nxContainer"></div> 

<script type="text/html" id="test"> 
    <div data-content-append="widget"> </div> 
</script> 

виджетов NX нужны чтобы быть созданными, чтобы получить свой контекст холста, и только тогда они становятся доступными. Вероятно, это более элегантный способ сделать это, но пока это будет для меня.

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