问题标签 [canjs-model]

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 回答
334 浏览

javascript - 使用 CanJS,当实例被销毁时,如何从 Model.List 中自动删除模型实例?

我很难理解调用destroy模型实例应该如何影响它所附加的 Model.List 。

该文件指出:

can.Model.List 相对于传统 can.List 的一个优点是,当您销毁模型时,如果它在该列表中,它将自动从列表中删除。

但是,当我运行此代码时:

这是我在控制台中看到的:

为什么调用destroyed后元素还在Model.List中?为什么不触发destroyedand事件?remove

请注意,在我尝试调试的实际代码中,调用destroy确实会触发 DELETE 请求,并且该对象会按预期在服务器上被删除。但是,它不会从 Model.List 中删除,因此也不会从关联的视图中删除。

0 投票
1 回答
678 浏览

canjs - CanJS如何刷新模型

我有一个模型,它代表在服务器上运行的作业列表

我想轮询服务器以获取计时器上的更新,以显示作业状态的更改。

我该怎么做呢?

我的控件看起来像这样

我的模型,到目前为止看起来像这样

0 投票
1 回答
310 浏览

javascript - 如何使用新模型对象刷新当前视图

我正在构建一个简单的任务应用程序,我可以在其中添加新状态。场景是我已经通过调用 can.Model findAll 方法使用预定义的对象数组构建了状态仪表板。视图存储在“dashboard.ejs”中。当我创建新状态时,我将这些数据保存到我的对象数组中,并在保存回调中保存新的数组数据(包括新的数组数据)。现在我的问题是如何用新返回的数据刷新我当前的视图

为此,我是否需要再次创建新控制器的对象,或者我遗漏了什么?

0 投票
3 回答
173 浏览

javascript - 如何在 CanJS 中获取延迟模型的长度?

我得到一个具有如下结构的模型延迟对象:

在此处输入图像描述

如何找出该对象内部存在多少对象(在本例中为三个)。如果我使用Object.keys(myObject).length,它包括对象观察者和其他数据,如 _computeBindings、_bindings 等。我什至hasOwnProperty在计算长度时尝试使用,但它没有给我想要的结果。

我能想到的一种方法是遍历索引并获得最后一个索引值,如下所示:

有这方面的API吗?

0 投票
1 回答
147 浏览

javascript - 尚未准备好的canjs模板模型。数据绑定

我在渲染模板时尚未准备好的对象时遇到问题。因此,它在没有数据绑定的情况下呈现空视图。

使用延迟对象或其他方法来确保数据绑定的正确方法是什么?

我试过用空模型初始化 selectedProject ,但这似乎有点转储方式:

当我需要使用项目的子对象(如项目阶段)时,这也不会解决问题。

编辑:我发现等待项目子对象的方式很尴尬。我绑定了模型更改的处理程序,所以现在即使刷新也有效。有没有更优雅的方法来做到这一点?

0 投票
1 回答
58 浏览

promise - can.Model 和 can.view 动态填充 DOM 或加载记录后

有以下can.Model:

我应该如何使用 init 方法实现 can.Control 以使用 defered=CaseModel.findAll({sobject: new SObjectModel.Case()}) 填充 can.view ,如下所示:

this.element.html(can.view('recipes', Defered));

以及这些记录如何在 mustache 模板中循环:{{#each ???? }}

谢谢

0 投票
1 回答
331 浏览

canjs - How do I update my view when my Model is sorted?

I have a CanJS Model.List which I'm rendering using an EJS template like follows:

In my app where I load the data with Model.findAll I iterate all the items and fire off an asynchronous call to update the distance property, I have a listener listing for changes to distance which then sorts the list based on the distance:

The call to sort() works, I have various console.logs() showing it, but my UI doesn't update.

I'm guessing I need the sort to trigger an event that this.each(...) will notice.

How do I get my View to update when the Model.List is re-sorted?

0 投票
2 回答
250 浏览

canjs - canjs findOne 延迟

我了解到,我们可以通过使用 new model.List({}) 来代替使用 model.findAll 并在 findAll 的回调函数中编写代码。例如,jsfiddle --> http://jsfiddle.net/CRZXH/48/ .. 在这个 jsfiddle 示例中 List 实现工作但 findOne 失败。

上面的示例工作正常,最初人员被分配了空对象,但在 ajax 调用后,完整的人员变量会自行更新列表和视图更新。

在 findOne 的情况下如何实现相同的目标?

这失败了……

我确实解决了如下问题:

这仅在我在 findeOne ajax 调用中添加 asyn=false 时才有效。

0 投票
2 回答
79 浏览

canjs - can.Model 多参数销毁

我正在使用一个我无法控制的 API。我想做这样的事情:

这不起作用 - canjs 根本不使用破坏 URL。我尝试创建一个函数,但传递的唯一参数是“id”。我相信你会说这不是真正的 REST,但我坚持使用 API。每当我将多个参数放入 url 时,都不会使用该 url。

有任何想法吗?

0 投票
2 回答
147 浏览

canjs - 为什么我应该将 JSON 服务器响应放在 can.Model 的“数据”字段下?

在 CanJS.com 上,它说不要从 JSON 服务本身返回一个数组。相反,它应该如下所示:

为什么这是必要的,它只适用于数组还是适用于所有对象?例如,单个对象响应应该是这样的吗?

或者如果只有一个数据项,是否data不再需要该字段?例如: