问题标签 [donejs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
187 浏览

canjs - DoneJS - 添加组件时聊天示例失败

我正在关注以下 URL 上的DoneJS聊天示例:

http://donejs.com/Guide.html

但是,当我进入 Step: Generate custom elements 时,我收到以下错误:

C:_source\donejs\donejs-chat>donejs 添加组件 home.component chat-home x 未指定“文件夹”或“应用程序名称”。既不在您的 .yo-rc.json 也不在您的 package.json 文件中

我已经安装了:

  • 节点JS 5.5.0
  • NPM 3.3.12
  • 完成JS 0.6.0
  • 引导程序 3.3.6

关于什么是错误的和/或如何解决问题的任何想法?

0 投票
2 回答
177 浏览

canjs - CanJS点击组件外部影响组件

我想在其中添加一个<some-component>对按钮作出反应的事件侦听器。

我相信这真的很简单。我对 CanJS 非常陌生,并且正在研究它。

我尝试将 a 添加$('body').on('click', '.click', function() {});到组件中,但它似乎不起作用。阅读了很多文档,但我仍然缺少一些基本的理解。

更新

我试过这个:

与事件监听器some-component-main

但这也没有用。

0 投票
0 回答
39 浏览

javascript - 使用 DoneJS 捕获 URL 的剩余部分

基本上,我的目标是捕获路由中 url 的其余部分并将其存储到 ViewModel 中。

在 AngularJS 中,你可以这样做:

...当您访问时/foo/bar/baz,例如,$routeParams.page'bar/baz'.

所以我在 DoneJS 中尝试了类似的东西,在以下行中app.js

哪个,真的,应该工作,对吧?

没有。当你重新加载时,Nodejs 控制台充满了:

此外,一个星号在 URL 末尾闪烁,ViewModel 中“页面”的内容在'home'和之间快速变化undefined,几秒钟后浏览器锁定(用 Chrome 和 Firefox 尝试)。

我已经厌倦了*从路线中删除,但这会导致/foo/bar/baz不匹配/foo/bar

如何将 URL 的其余部分捕获到 ViewModel 中?

0 投票
1 回答
60 浏览

plugins - Funcunit 的开放正在给 Travis 和 CircleCI 等在线 CI 服务带来麻烦

我有一个 donejs 插件 ( https://github.com/riescorp/donejs-typeahead ),我决定使用 funcunit ( http://funcunit.com/ ) 进行 GUI 交互测试。在我的电脑上一切正常,无论是运行测试页面(http://localhost:8080/test/test.html)还是npm test在控制台上运行。

问题是在 CircleCI 或 Travis CI 上运行测试时,测试不会通过。错误类似于“xxxxx 页面未及时加载!” (见下面的例子)。

有一个简化的分支来显示正在发生的事情(https://github.com/riescorp/donejs-typeahead/tree/testing-open),您可以克隆它,然后运行npm installnpm test您会看到它有效。

您可以在此处查看 CircleCI 中错误的详细信息:

Travis 生成相同的错误,但它会失败,因为我正在测试 firefox 和 chrome(travis 不支持 chrome)

示例错误:

1) QUnit "test/test.html" on Chrome 53.0.2785 / Linux 0.0.0: donejs-typeahead GUI Interaction DEBUG TESTS DEBUG 1 Page //../src/donejs-typeahead.html not loaded in time!: Error: Expected true but was false at Object.ok (http://localhost:3996/node_modules/steal-qunit/node_modules/qunitjs/qunit/qunit.js:2194:12) at Object.assertOK (http://localhost:3996/node_modules/funcunit/browser/adapters/qunit.js:12:10) at http://localhost:3996/node_modules/funcunit/browser/queue.js:168:27

0 投票
1 回答
145 浏览

production-environment - 无法在生产模式下运行

我有一个 donejs 应用程序,它在开发模式下运行正常donejs develop,但是当我在生产模式下运行它时:

  1. donejs build
  2. donejs deploy(到火力基地)
  3. NODE_ENV=production donejs start

它不会启动并显示错误(参见代码 A)

此文件:file:my-app/dist/bundles/my-app/index.js:704对应于 JQuery 3.x,它不是项目本身的依赖项,而是 can-connect-feathers 的依赖项(https://github.com/canjs/can-connect-feathers)。事实上,index.js其中还包含 JQuery 2.x,这让我觉得它们之间可能存在某种不兼容。

我已经尝试将项目的依赖项更改为 JQuery 3.x 但没有帮助。实际上它甚至donejs develop会失败(参见代码 B)。

我还尝试了以下方法: cd my-app/node_modules/steal npm install 但没有帮助,出现另一个错误并最终尝试cd my-app/node_modules/can && npm install但最终出现多个错误。

我在用着:

  • donejs@0.9.2
  • 节点@4.6.2
  • npm@2.15.11
  • 可以连接羽毛@1.2.1

代码 A

NODE_ENV=production donejs start

my-app@0.0.0 start my-app done-serve --proxy http://localhost:3030 --port 8080 done-serve starting on http://localhost:8080 Potentially unhandled rejection [5] TypeError: Error loading "package.json!npm" at file:my-app/package.json Error loading "bundles/my-app/index" at file:my-app/dist/bundles/my-app/index.js Error evaluating file:my-app/dist/bundles/my-app/index.js Cannot read property 'createElement' of undefined at i (file:my-app/dist/bundles/my-app/index.js:704:20) at file:my-app/dist/bundles/my-app/index.js:1039:2881 at file:my-app/dist/bundles/my-app/index.js:1039:3580 at file:my-app/dist/bundles/my-app/index.js:268:21 at file:my-app/dist/bundles/my-app/index.js:268:27 at Object.exports.runInThisContext (vm.js:54:17) at doEval (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:2059:10) at __eval (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:1976:7) at Loader.exec [as __exec] (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:339:5) at Loader.loader.instantiate (my-app/node_modules/steal/node_modules/steal-systemjs/dist/system.src.js:1517:16)

代码 B

donejs develop

my-app@0.0.0 develop my-app done-serve --develop --proxy http://localhost:3030 --port 8080 done-serve starting on http://localhost:8080 Potentially unhandled rejection [8] Error: Error loading "my-app@0.0.0#index.stache!done-autorender@0.8.0#autorender" at <unknown> Error loading "can@2.3.27#util/jquery/jquery" at file:my-app/node_modules/can/util/jquery/jquery.js Error loading "can@2.3.27#util/jquery/jquery" from "done-autorender@0.8.0#autorender" at file:my-app/node_modules/done-autorender/src/autorender.js Did not find ./node_modules/can/node_modules/jquery/package.json at FetchTask.utils.extend.next (file:my-app/node_modules/steal/ext/npm-crawl.js:532:11) at file:my-app/node_modules/steal/ext/npm-crawl.js:556:33 at tryCatchReject (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1183:30) at runContinuation1 (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1142:4) at Fulfilled.when (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:930:4) at Pending.run (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:821:13) at Scheduler._drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:97:19) at Scheduler.drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:62:9) at nextTickCallbackWith0Args (node.js:436:9) at process._tickCallback (node.js:365:13) Potentially unhandled rejection [16] Error: Error loading "can@2.3.27#util/jquery/jquery" at file:my-app/node_modules/can/util/jquery/jquery.js Error loading "can@2.3.27#util/jquery/jquery" from "my-app@0.0.0#index.stache!done-autorender@0.8.0#autorender" at file:my-app/src/index.stache Did not find ./node_modules/can/node_modules/jquery/package.json at FetchTask.utils.extend.next (file:my-app/node_modules/steal/ext/npm-crawl.js:532:11) at file:my-app/node_modules/steal/ext/npm-crawl.js:556:33 at tryCatchReject (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1183:30) at runContinuation1 (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:1142:4) at Fulfilled.when (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:930:4) at Pending.run (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:821:13) at Scheduler._drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:97:19) at Scheduler.drain (my-app/node_modules/steal/node_modules/steal-systemjs/node_modules/steal-es6-module-loader/dist/es6-module-loader.src.js:62:9) at nextTickCallbackWith0Args (node.js:436:9) at process._tickCallback (node.js:365:13)

0 投票
1 回答
74 浏览

javascript - 使用 donejs 未正确更新计算值

我有一个标准的 donejs 项目,其中包含一个组件和一个模型,它们都是使用默认生成器创建的,如下所示:

我在这里留下了一个示例项目:https ://github.com/riescorp/donejs-promise-iterate

如果您使用donejs develop并转到http://localhost:8080运行此示例,您将看到如下内容:

图片

问题是,每当您更改任何故事的页数(输入框)值时,总和都不会更新其值。我几乎尝试了一切,从承诺到已经解决的承诺,但似乎没有任何效果。

不知何故,当这些值中的任何一个发生变化时,似乎根本没有更新触发器。我也尝试将结果设置为 List ( can.List) 但没有运气。

0 投票
1 回答
357 浏览

javascript - 在 donejs 中正确建模 MVVM 应用程序

我做了什么

我在 donejs 中创建了一个组件,然后创建了两个超模contactemail使用以下命令:

  • donejs add component contactComponent contact-component
  • donejs add supermodel contact
  • donejs add supermodel email

有一个提供联系人和电子邮件的 API (feathers+mongodb)。每封电子邮件都有一个contactId.

该组件包含Contact模型并处理诸如保存、创建新元素、删除元素等操作。将其与.stache文件组合时,它将成功地从 API 中检索元素并相应地列出它们。

所以每个Contact人都有电子邮件。由于每个联系人都有自己的电子邮件,因此contactComponent 无法直接获取它们,而是通过 Contact元素获取它们。

这就是我的设计问题开始的地方。

到目前为止,contactComonent 创建了一个处理联系人处理方式的视图模型。联系人模型处理 API 连接。这工作正常,可扩展且干净。

但是每个联系人都需要一个新模型来加载数据(电子邮件),然后我直接使用该模型来管理与电子邮件相关的所有逻辑。这确实有效,但似乎让模型处理连接和处理复杂交互的视图模型更适合 MVVM 设计模式。

我想我不是第一个进行此类数据建模的人,我认为必须有更好的解决方案,尤其是在处理大量关系和更复杂的关系时。

我认为我目前拥有的是这样的:

这就是我正在寻找的(我可能错了)

使用过的文件

文件结构 联系人组件/contactComponent.js contactComponent/contactComponent.stache 模型/email.js

这是事情开始变得过于复杂的地方:

模型/contact.js
0 投票
1 回答
63 浏览

javascript - 在 nodejs 服务器中部署 donejs 应用程序

我对 donejs 完全陌生,使用 yeoman 创建了 donejs 应用程序,然后创建了一些组件。为了部署应用程序,我运行了“node build”并创建了一个 dist 文件夹,其中包含一个 bundles 文件夹和一个 Steal.production.js 文件。

在基本上为应用程序提供服务的nodejs服务器上部署这个dist文件夹的方法是什么,而且我不想在控制台中进行任何观察,它应该基本上只是开始通过端口提供服务,以便devops之后可以运行脚本。

构建.js

从 dist 文件夹:

我的 package.json 文件中的脚本:

运行 donejs start 后:

它在 8080 上服务,但控制台被阻止,devops 团队说控制台不应该被阻止,以便他们可以在启动服务器后运行脚本。

0 投票
1 回答
19 浏览

donejs - 将参数从子级传递给父级时在 donejs 视图中访问模型

来自官方文档: 将模型从 donejs 子组件传递到父组件模型

我在主页组件和另一个产品表组件中包含了搜索过滤器组件,该组件将在过滤器更改时进行更新。

主页比较(stache 文件):

如何在主页组件js文件中访问这个“*filters”?我已经尝试过:因为*过滤器是一个数组,如果我将它作为自定义数据属性传递,它就会变成“[object][object]”。

0 投票
1 回答
104 浏览

node.js - steal.js 中的控制台错误:“无法定义属性 _instanceDefinitions”

加载页面会产生以下错误: steal.js:140 Potentially unhandled rejection [1] TypeError: Cannot define property _instanceDefinitions, object is not extensible at Function.defineProperty (<anonymous>) at Object.defineExpando (http://localhost:8080/node_modules/can-define/define-helpers/define-helpers.js:20:11) at DefineMap.setKeyValue (http://localhost:8080/node_modules/can-define/map/map.js:52:30) at Object.setKeyValue (http://localhost:8080/node_modules/can-reflect/reflections/get-set/get-set.js:50:23) at Object.eval (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:701:23) at String.eval (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:445:21) at Object.eachListLike (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:376:17) at Object.eachIndex (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:338:16) at Object.eachKey (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:443:16) at Object.assignDeepMap (http://localhost:8080/node_modules/can-reflect/reflections/shape/shape.js:698:8) Hot realoding 不再起作用。这似乎来自steal.js,我不知道这与我的代码有什么关系。难道这个问题发生在工作线程中......?

这是我的 package.json: ... "dependencies": { "can-ajax": "^1.1.4", "can-component": "^3.3.10", "can-connect": "^1.5.9", "can-define": "^1.5.5", "can-route": "^3.2.3", "can-route-pushstate": "^3.1.2", "can-set": "^1.3.2", "can-stache": "^3.11.1", "can-view-autorender": "^3.1.1", "can-zone": "^0.6.13", "done-autorender": "^1.4.0", "done-component": "^1.0.0", "done-css": "^3.0.1", "done-serve": "^1.5.0", "generator-donejs": "^1.0.7", "lodash": "^4.17.5", "steal": "^1.5.15", "steal-less": "^1.2.0", "steal-stache": "^3.1.2" }, "devDependencies": { "can-fixture": "^1.1.1", "donejs-cli": "^1.0.0", "funcunit": "^3.2.0", "steal-qunit": "^1.0.1", "steal-tools": "^1.9.1", "testee": "^0.3.0" } ... 节点:

node --version v8.9.2 npm --version 5.5.1

操作系统: ver Microsoft Windows [Version 10.0.15063]