问题标签 [backbone-stickit]

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 投票
2 回答
402 浏览

javascript - 当值为空时如何取消设置属性?

我有一个带有许多空字段的搜索表单。用户在字段中输入值并点击“Enter”后,我从值(使用$.param())创建一个查询字符串并将其发送到服务器。一切都很好,直到您清空一个字段并再次点击“Enter”。因为该字段之前有一个值,该属性已经被设置,所以现在在点击提交时,该属性仍然被添加到查询字符串中,只是没有附加值。

一个例子和一些代码:

您将在这一var query = $.param(this.model.attributes);行中看到我将模型的属性转换为查询字符串以发送到我的 API。您可能还会看到我正在使用backbone.stickit。如何在创建查询字符串之前无缝取消设置任何为空的属性?

0 投票
1 回答
1488 浏览

backbone.js - 带有stickit.js的backbone.js嵌套对象属性

我正在使用stickit.js 来实现两种方式的数据绑定。我很高兴知道如何将stickit 与嵌套对象属性绑定。例如

我想知道是否可以像这样绑定文本输入。

0 投票
4 回答
2298 浏览

backbone.js - 使用 Backbone stickit 进行 Backbone Validation - 更改属性时验证所有属性

我正在尝试将 Backbone Validation 与 Backbone Stickit 一起使用,我希望在用户输入它们时一次验证一个属性。但是,当用户输入一个值时,模型上的所有属性都会得到验证,而不仅仅是用户更改的属性。我究竟做错了什么?

我的观点:

0 投票
1 回答
326 浏览

backbone.js - When using Backbone + Stickit, do the view model objects need to extend Backbone.Model?

Loosely said, the various components in a MVVM pattern are

  • Model: this represents the data send by the server and sent back to the server. this contains no state related to display of the UI
  • ViewModel: this is constructed from one or models. this contains state meant for UI manipulation (is the button enabled or disabled). all logic meant for UI manipulation is stored here. this layer has no dependency on any UI framework (no jQuery calls)
  • View: this has tight coupling with the UI framework/underlying UI controls. One view observes one and only one view model. A view model can be observed by one or more views. The view is responsible for doing two-binding with the view model.
  • A presenter/coordinator: While not a part of the traditional implementation, in its absence the view model ends up with way too much responsibility. This guy helps coordinate making ajax calls (get/post), listening to events on the global event aggregator etc

Standalone Backbone has no concept of view models and data binding. In that scenario, the data returned by the server can be modelled as Backbone.Model objects. The bindings are done manually and a POJO can be used for view-model syncing.

If I wish to use Stickit for data binding, it appears that the view model needs to be an instance of Backbone.Model. Chiefly because the bindings work within the context of a Backbone.View and a Backbone.View expects a Backbone.Model object to be present as a property of the view. Also, a Backbone.Model raises change events and what not. I assume it will be difficult to observe a POJO. Again, this is my understanding from reading the Stickit docs. Please correct me if I am wrong.

A Backbone.Model has other methods on it that don't make sense from the point of view of a view model, like save, fetch etc. I was reading up on another mvvm library, Knockback. It can transform a Backbone.Model into a Knockout.js view model. Instead of passing in a full fledged Backbone.Model, it can also accept any POJO that has get/set methods and raises change events when the properties have changed.

Does Stickit have a similar contract wherein I can pass in a POJO that has get/set methods and raises change events? What is the recommended usage?

0 投票
1 回答
1031 浏览

javascript - Backbone.stickit 和 html-form:如何只保存(补丁)更改的属性?

tl;博士

如何使用带有 html 表单的主干.stickit 来更改从服务器获取的现有模型,并且只将更改的属性(由 html 表单中的用户输入更改)修补到服务器?

/tl;博士

我在一个backbone.js 应用程序中使用backbone.stickit将模型绑定到作为主干视图一部分的HTML 表单。到目前为止,这工作正常,但如果我要保存绑定模型,它会变得有点复杂。这是因为我想使用 PATCH 方法并且只将更改的属性发送到服务器。我试图说明我到目前为止所做的事情:

从服务器获取模型

最后一行表示我的问题,因为我认为我可以changedAtrributes()稍后使用该方法来获取需要在服务器上打补丁的属性。所以我尝试了我在这里找到的解决方法

做stickit-bindings

现在我渲染我的视图并调用视图stickit()上的方法来进行绑定:

绑定工作正常,我的用户模型得到更新,但是changedAttributes()一直保持空白。

将模型保存到服务器

如果用户进行了所有需要的更改,则应将模型保存到服务器。我想使用 PATCH 方法,并且只将更改的属性发送到服务器。

或者

第二种方法有不同的结果:

  1. 如果我没有使用user.set({})woraround,所有属性都会被修补到服务器
  2. 如果我使用user.set({})woraround 的返回值为changedAttributes()“false”并且所有属性都被 PUT 到服务器
  3. 如果我user.set("age","123")在调用之前调用a save(),那么只有年龄属性被修补到服务器

set()所以结果 3 是我想要的行为,但这有两个问题:首先,如果在 html 表单中更改属性,stickit 似乎没有使用模型上的方法来更新属性。其次,如果您set()使用一个属性调用,然后使用另一个属性调用,则仅返回第二个属性changedAttributes()

也许我只是监督了骨干网或骨干网.stickit 文档中的某些内容,所以我没有得到想要的行为。有什么想法吗?

0 投票
1 回答
75 浏览

javascript - 例如,当使用 Backbone.stickit 单击表单的保存时,如何将视图字段保存到模型中

到目前为止,我一直在使用backbone.stickit 来处理在更新视图字段时应该立即更新模型的情况。但是对于几种情况,我发现仅在按下提交时更新模型更合适。

Stickit 支持events,因此可以定义触发模型覆盖的事件。但是,这些事件仅是特定于输入字段的。

是否可以触发视图事件的模型覆盖(如clicked:submit)?

谢谢你的建议。

0 投票
2 回答
474 浏览

backbone.js - 如何让backbone.stickit 一次收集所有值?

问题:

我曾经backbone.stickit为表单做 2 路绑定。但是,除非我为所有属性设置updateModel为,否则我发现很难取消集合。false所以,问题是,当用户单击保存按钮时,我如何从表单中获取所有值。

AKA 我如何在stickit 中一次手动收集数据?

我试图访问它以获取所有处理程序,以便我可以手动触发,但显然,由于getConfiguration函数是私有的,我无权访问它。

0 投票
1 回答
215 浏览

javascript - 在主干中绑定模型时未触发 keyup 事件

我正在使用 require.js 和stickit 进行模型绑定。'change' 事件工作正常,但如果我使用 keyup 进行焦点输出,则 checkBindings() 函数不会触发。为什么会这样?

0 投票
1 回答
295 浏览

javascript - 与 require.js 和 backbone.stickit 一起使用时出现奇怪的 Backbone.Validation 错误

我将 T. Hedersen 的 backbone.validation 插件 ( https://github.com/thedersen/backbone.validation ) 与用于模型绑定的主干.stickit 插件结合起来很有趣。我遇到了一个奇怪的错误,当模型的单个属性发生变化时,它会不断验证所有字段。这是代码

模型

看法

定义(功能(要求){

0 投票
1 回答
111 浏览

javascript - Backbone,获取更改元素的 id/name

我正在使用带有stickit 的Backbone.js 进行绑定。我有类似下面的东西。我如何知道用户点击了哪个元素?(单选按钮)