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
});
});