2015-05-11 2 views
1

Я изучаю (пытается) JavaScript/WinJS с новым VS2015 RC. Я создал проект UAP, и я хочу связать шаблоны.vs2015 - Javascript/WinJS. Ошибка с .winControl (неопределенная или нулевая ссылка)

Я видел несколько учебников и примеров, но при попытке самостоятельно получить эту ошибку с помощью свойства render.

Вот код подразумеваемые (JavaScript):

WinJS.UI.Pages.define("default.html", { 
     ready: function (element, options) { 
      var templateControl = element.querySelector("#templateControl"); 

      var obj = { propOne: "Text text text", propTwo: 2 }; 
      //fails here 
      templateControl.winControl.render(obj, 
       element.querySelector("#renderHere")); 
     } 
    }); 

код (HTML):

<div id="renderHere"></div> 
    <!--Template--> 
<div id="templateControl" data-win-control="WinJS.Binding.Template"> 
    <p data-win-bind="innerText:propOne"></p> 
    <p data-win-bind="innerText:propTwo"></p> 
</div> 

У меня есть 'нажмите кнопку' событие на 'TemplateControl' и работает нормально, однако, как я сказал, winControl задает мне неопределенный или нулевой. Я почти уверен, что это я, но это все на превью, так что это сомнение.

Благодаря

+0

Вы пробовали использовать '' 'getElementById''' вместо' '' querySelector'''? Я не знаю winjs, так что это просто дикая догадка. Или они должны быть запрошены с помощью функции запроса winjs https://msdn.microsoft.com/en-us/library/windows/apps/br229847.aspx – GillesC

+0

Да, я попробовал. Я не хотел делать loong post, но, я попробовал это, попытался получить winControl в var и затем сделать. renderHere в var и после рендеринга ... и что-то еще, но я даже не помню. Ммм ... Я видел шаблоны привязки CodeShow и try.buildwinjs.com. – Frs

ответ

0

Вам не нужно использовать WinJS шаблон для связывания данных с HTML, вы можете сделать это следующим образом:

<div id="someId"> 
    <p data-win-bind="innerText: propOne"></p> 
    <p data-win-bind="innerText: propTwo"></p> 
</div> 

JS:

WinJS.UI.Pages.define("default.html", { 
    ready: function (element, options) { 
     var obj = { propOne: "Text text text", propTwo: 2 }; 
     WinJS.Binding.processAll(element.querySelector("#someId"), obj); 
    } 
}); 

Кроме того, winControl свойство устанавливается, когда WinJS.UI.processAll() сделано, до тех пор оно не определено.

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

+0

Спасибо за ответ, в конце я сделал это именно так. Я не могу заставить его работать с шаблонами, даже с 'processAll(). Done (// code)', имея ту же проблему. – Frs

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

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