Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 主干stickit-使用类名和限定的“绑定”;这";_Jquery_Backbone.js_Backbone Stickit - Fatal编程技术网

Jquery 主干stickit-使用类名和限定的“绑定”;这";

Jquery 主干stickit-使用类名和限定的“绑定”;这";,jquery,backbone.js,backbone-stickit,Jquery,Backbone.js,Backbone Stickit,我经常发现自己为stickitjQuery targetIDs提供了某种命名约定,其形式是some aggregate individual element-{#number}以一对一的方式将每个ID与相应的集合元素配对。这是为了确保stickit只更新有问题的特定视图,而不更新其他类似的聚合视图 如果您可以告诉stickit要在其下执行更新的“根”节点,那么似乎应该有一种方法来使用(比如)类名,而不是IDs。例如,如果我定义一个视图,我说绑定:{.individual title:{obser

我经常发现自己为
stickit
jQuery target
ID
s提供了某种命名约定,其形式是
some aggregate individual element-{#number}
以一对一的方式将每个
ID
与相应的集合元素配对。这是为了确保
stickit
只更新有问题的特定
视图
,而不更新其他类似的聚合视图

如果您可以告诉
stickit
要在其下执行更新的“根”节点,那么似乎应该有一种方法来使用(比如)类名,而不是
ID
s。例如,如果我定义一个
视图
,我说
绑定:{.individual title:{observe:“title”}
stickit
知道
title
属性来自
这个.model
,因此不需要限定。但是,每当我对左侧应用相同的逻辑时,
stickit
就会对文档上具有该类名的所有节点执行更新,而不仅仅是那些位于
this.$el
下的节点,其中
$el
是我视图的根节点


是否有一个内置的或其他简单的方法来实现这一点,这样我就可以停止
id
使用愚蠢的命名约定对我的所有元素进行命名?或者这就是您应该做的吗?

我实际上绑定到表单元素上的name属性,因此消除了id和类名的使用。例如,假设我有以下模型

User.Model = Backbone.Model.extend({
    defaults: {
        firstname: null,
        lastname: null,
        phone: null,
        personemail: null
    }
});
然后创建以下帮助程序:

// Create default binding therefore eliminating repetition
Backbone.View.prototype.createDefaultBindings = function() {
    var k, v, _ref, _results;
    this._bindings = {};
    _ref = this.model.toJSON();
    _results = [];
    for (k in _ref) {
        v = _ref[k];
        _results.push(this._bindings['input[name="' + k +'"]'] = { observe: k });
    }
    return _results;
};

// Helper to overide bindings in our view
Backbone.View.prototype.mergeBindings = function() {
    if (this.model) {
        this.createDefaultBindings();
    }
    _.extend(this._bindings, this.bindings);
    this.bindings = this._bindings;
};
那么我们可以有以下的观点:

User.Views.Form = Backbone.View.extend({
    initialize: function(options) {
        this.mergeBindings();
    },

    render: function() {
        this.stickit();
    }
});
初始化我们的视图

var view = new User.Views.Form({ model: new User.Model() })
然后,它将通过以下输入绑定到您的模板:

<input name="firstname" type="text">
<input name="lastname" type="text">
<input name="phone" type="text">
<input name="email" type="text">


+1感谢您分享您的特殊布线/管道安装。那有帮助!但是,如果您不是处理表单元素,而是处理
span
h2
img
,该怎么办?我在文档
中发现了以下内容:el(选择器)
(绑定到视图委托(view.$el)的特殊选择器值)。因此,也许您可以执行以下操作:el.您的选择器?让我知道这是否有效。很奇怪。当我在家的时候,我也会看看资料的来源。