2016-03-01 5 views
0

Я использую require.js и knockout.js и создаю небольшую навигацию по меню с использованием аккордеона и составных компонентов.Компонент ojCollapsible не найден

index.html имеет тег

<div id="navigationContent" data-bind="ojModule: { name: 'navContent'}"></div> 

navContent.tmpl.html имеет

<div id="navContent" data-bind="ojComponent: {component: 'ojAccordion'}"> 
    <div id="c1"> 
    <span><</span> Usage</span> 
    <p class="oj-p">Users</p> 
    </div> 
    <div id="c3" data-bind="ojComponent: {component: 'ojCollapsible', expanded:true}"> 
    <span>Diagnostics</span> 
    <div> 
    <p class="oj-p">Errors</p> 
    </div> 
    </div> 
</div> 

и navContent.js

require(['ojs/ojcore', 'knockout', 'jquery', 'ojs/ojknockout', 'ojs/ojaccordion', 'ojs/ojcollapsible'], 
function(oj, ko, $) 
{ 
    $(document).ready(
    function() 
    { 
     ko.applyBindings(null, document.getElementById('navContent')) 
    } 
); 
}); 

однако, на управлении страницей меню не отображается. консоль javascript показывает ошибку:

Component ojCollapsible is not foundc.u.Wv @ ojcore.js:13c.u.error @ ojcore.js:12a.ia.XS @ ojknockout.js:16a.ia.Qj @ ojknockout.js:12function.a.j.q @ knockout-3.3.0.js:66l @ knockout-3.3.0.js:44a.w.a.j @ knockout-3.3.0.js:47(anonymous function) @ knockout-3.3.0.js:66a.a.o @ knockout-3.3.0.js:10g @ knockout-3.3.0.js:65h @ knockout-3.3.0.js:63k @ knockout-3.3.0.js:63a.Ja @ knockout-3.3.0.js:69a.ia._init @ ojknockout.js:12(anonymous function) @ knockout-3.3.0.js:65a.Z.a.k.u @ knockout-3.3.0.js:35(anonymous function) @ knockout-3.3.0.js:65a.a.o @ knockout-3.3.0.js:10g @ knockout-3.3.0.js:65h @ knockout-3.3.0.js:63a.ub @ knockout-3.3.0.js:69(anonymous function) @ ojmodule.js:13 
ojcore.js:13 Component ojAccordion is not found 

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

ответ

2

Поскольку это код OracleJET, все компоненты ojs/xxxx уже должны быть зарегистрированы для вас. Но если вы используете этот код в контексте JET QuickStart (т.е. --template = basic), то привязка данных ojModule в index.html ожидает использования блока Require.js define() и возврата функции viewModel , в отличие от использования автономных блоков require(), показанных в Поваренной книге JET.

Я только что получил этот код, чтобы работать navContent.js в QuickStart (хорошая работа BTW изменения ojModule данных создайте привязку QUICKSTART от viewName: к name: в index.html ... я пропустил это в первый):

navContent.js

define(['ojs/ojcore', 'knockout', 'jquery', 'ojs/ojknockout', 'ojs/ojaccordion', 'ojs/ojcollapsible'], 
function(oj, ko, $) 
{ 
    function navContentViewModel() { 
     var self = this; 
     console.log('navContentViewModel here...doesn\'t do much other than load the ojs/xxxx dependencies'); 
    } 
    return navContentViewModel; 
}); 
Смежные вопросы