javascript - 未找到组件 ojCollapsible

标签 javascript knockout.js requirejs

我正在使用 require.js 和 knockout.js 并使用 Accordion 和可折叠组件创建一个小菜单导航。

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 文件夹中。所以不确定问题是什么

最佳答案

因为这是OracleJET代码 所有 ojs/xxxx 组件应该已经为您注册。但是,如果您在 JET QuickStart 的上下文中使用此代码(即 --template=basic),那么 index.html 中的 ojModule 数据绑定(bind)期望您使用 Require.js define() block 并返回 viewModel 函数,而不是使用 JET Cookbook 中显示的独立 require() block 。

我刚刚让这段代码适用于 QuickStart 中的 navContent.js (顺便说一句,将 QuickStart 的 ojModule 数据绑定(bind)从 viewName: 更改为 name: 在 index.html 中是不错的工作。 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;
});

关于javascript - 未找到组件 ojCollapsible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35714253/

相关文章:

javascript - 重构 JS 对象数组

javascript - 点击事件绑定(bind)的 knockout 传递 $parent

jquery-mobile - Phonegap 和框架的世界?

javascript - 使用 ScrollMagic.js 作为 AMD 模块

php - Facebook Open Graph API 使用 PHP 或 Javascript 创建对象

Javascript:使用字符串更新机器人的方向不起作用

javascript - react 日期选择器过滤日期问题

javascript - knockout renderTemplate() 渲染模式

events - 使用映射插件时,Knockout 中的 beforeChange 值未定义

javascript - 如何使用 codeigniter 在不同页面、部分实例化 require.js 模块?