Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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
Javascript 关于Backbone.View上下文中的jquery插件_Javascript_Jquery_Jquery Plugins_Backbone.js - Fatal编程技术网

Javascript 关于Backbone.View上下文中的jquery插件

Javascript 关于Backbone.View上下文中的jquery插件,javascript,jquery,jquery-plugins,backbone.js,Javascript,Jquery,Jquery Plugins,Backbone.js,使用插件, 可以非常轻松地创建提交和取消按钮。 下面是一个非常简单的代码示例(*) 现在,让我们假设在MyView(Backbone.View)中,我想触发事件,单击由Jeditable创建的按钮submit。 以下是有关主干网的代码。查看(**) 当我触发事件“click.submitBtn”时,$('.edit_area')的值。文本为空字符串。 为了解决这个问题,我实现了以下代码(***) 你有什么好主意来改进(***)的代码吗?我不喜欢使用setTimeout进行回调 (*) (**

使用插件,
可以非常轻松地创建提交和取消按钮。
下面是一个非常简单的代码示例(*)

现在,让我们假设在
MyView
(Backbone.View)中,我想触发事件,单击由Jeditable创建的按钮submit。
以下是有关主干网的代码。查看(**)

当我触发事件
“click.submitBtn”
时,$('.edit_area')的值。文本为空字符串。 为了解决这个问题,我实现了以下代码(***)

你有什么好主意来改进(***)的代码吗?我不喜欢使用
setTimeout
进行回调


(*)


(***)


在初始化函数中

$('.edit_area').editable(this.close, { 
         type    : 'textarea',
         submit  : 'OK',
});
闭合函数定义

close:function(value, settings) { 
    this.model.save({
        name: value
    });
  });
完整代码
var editableview=Backbone.View.extend({
初始化:函数(){
_.bind(this.close,this);
},
渲染:函数(){
$(this.el)。查找('.edit_area')。可编辑(this.close{
键入:“textarea”,
提交:“Ok”
取消:“撤消”
});
},
关闭:功能(值、设置){
这个是.model.save({
名称:value
});
});
});

Var That=这是错误的。这是DOM视图,而不是主干视图。你可以做:

$('.edit_area').editable(this.close, { 
         type    : 'textarea',
         submit  : 'OK',
         submitdata: {view: this},
});
散列中的“视图”将是主干视图。可以在关闭功能中访问它

close:function(value, settings) { 
    settings.submitdata.view.model.save({
        name: value
    });
});

这两条语句的顺序有一个输入错误切换到下面的
var=this;console.log($(that.el).find(“[data tid='editable']”)text());//空字符串
@Deeptechtons谢谢,不管怎样,问题仍然存在。也许您想查看表的“提交到函数而不是URL”部分。您能够处理输入的文本textarea@Deeptechtons你是对的。。因为我的原始代码带有函数,所以我更改了我的问题。@下划线666这是您的问题,对吗<代码>你有什么好主意来改进(***)的代码吗?我不喜欢使用setTimeout进行回调。
我认为代码解决了这个问题that@underscore666您可以查看更新的代码。它将模型保存到服务器。为模型设置
URL
,并将关闭函数的
context
更改为
current view
您的想法很好。。但我有一个问题,可编辑代码在主干视图中作为模块加载…所以当我运行函数close时,它指的是dom,而不是backbone.view。
close:function(value, settings) { 
    this.model.save({
        name: value
    });
  });
var editableview = Backbone.View.extend({
    initialize: function () {
        _.bind(this.close, this);
    },
    render: function () {
        $(this.el).find('.edit_area').editable(this.close, {
            type: 'textarea',
            submit: '<div class="submitBtn">Ok</div>'
            cancel: '<div class="submitBtn">Undo</div>'
        });
    },
    close: function (value, settings) {
        this.model.save({
            name: value
        });
    });
});
$('.edit_area').editable(this.close, { 
         type    : 'textarea',
         submit  : 'OK',
         submitdata: {view: this},
});
close:function(value, settings) { 
    settings.submitdata.view.model.save({
        name: value
    });
});