如何使用 Rivets JS 将新对象绑定到视图?
How to bind a fresh object to the view with Rivets JS?
我正在开发一个应用程序的个人资料部分,用户可以在其中的一侧看到他的个人资料的详细信息,如果他单击“编辑”,右侧的部分就会变得可见,让他可以编辑详细信息。
我正在使用 RivetsJS 使其成为单页应用程序,因此当用户开始在右侧的文本框中键入内容时,结果也会显示在左侧的配置文件部分,主要是因为看起来不错的双向数据绑定在更新时保持这种状态。
var view = null;
bindView = function(user){
// If the view is binded previously, unbind it
if(view != null){
view.unbind();
}
// Bind a fresh object to the view
view = rivets.bind($('#profile'), {user: user});
};
// Fetching the user details and binding them to the view
$.getJSON('/auth/user', function(response){
bindView(response);
});
因此,当加载视图时,我有 view
变量,该变量为空,但随后从服务器获取的 JSON 调用 bindView()
方法并传递从返回的用户对象服务器并将其绑定到视图。
$.ajax({
url: '/profile/update',
type: 'POST',
dataType: 'JSON',
data: $('form#user-form').serialize(),
success: function(response){
bindView(response);
$( "#toggleprofile" ).toggle("slow");
},
});
现在更新配置文件后,我再次调用 bindView()
方法,该方法首先取消绑定视图,然后将其与新对象绑定(参见方法)。问题是它没有绑定它并且分页符。如果我从方法中删除 view.unbind()
,它工作正常。
那么正确的方法是什么?它是如何工作的?我的意思是我认为我应该取消绑定视图,然后将它与新对象绑定到它们各自的元素,但这不起作用。为什么?
如果我已经将 #profile
标签绑定到 user
对象,然后我将它与另一个更新的对象绑定,会不会有冲突或者这是正确的方法是吗?
绑定的要点是您应该更新现有对象,而不是重新绑定新对象。当被监视对象发生变化时,它应该自动更新绑定元素,反之亦然。那看起来像这样:
var userData = { user: '' };
rivets.bind($('#profile'), userData);
$.ajax({
url: '/profile/update',
type: 'POST',
dataType: 'JSON',
data: $('form#user-form').serialize(),
success: function(response) {
userData.user = response;
$( "#toggleprofile" ).toggle("slow");
}
});
我正在开发一个应用程序的个人资料部分,用户可以在其中的一侧看到他的个人资料的详细信息,如果他单击“编辑”,右侧的部分就会变得可见,让他可以编辑详细信息。
我正在使用 RivetsJS 使其成为单页应用程序,因此当用户开始在右侧的文本框中键入内容时,结果也会显示在左侧的配置文件部分,主要是因为看起来不错的双向数据绑定在更新时保持这种状态。
var view = null;
bindView = function(user){
// If the view is binded previously, unbind it
if(view != null){
view.unbind();
}
// Bind a fresh object to the view
view = rivets.bind($('#profile'), {user: user});
};
// Fetching the user details and binding them to the view
$.getJSON('/auth/user', function(response){
bindView(response);
});
因此,当加载视图时,我有 view
变量,该变量为空,但随后从服务器获取的 JSON 调用 bindView()
方法并传递从返回的用户对象服务器并将其绑定到视图。
$.ajax({
url: '/profile/update',
type: 'POST',
dataType: 'JSON',
data: $('form#user-form').serialize(),
success: function(response){
bindView(response);
$( "#toggleprofile" ).toggle("slow");
},
});
现在更新配置文件后,我再次调用 bindView()
方法,该方法首先取消绑定视图,然后将其与新对象绑定(参见方法)。问题是它没有绑定它并且分页符。如果我从方法中删除 view.unbind()
,它工作正常。
那么正确的方法是什么?它是如何工作的?我的意思是我认为我应该取消绑定视图,然后将它与新对象绑定到它们各自的元素,但这不起作用。为什么?
如果我已经将 #profile
标签绑定到 user
对象,然后我将它与另一个更新的对象绑定,会不会有冲突或者这是正确的方法是吗?
绑定的要点是您应该更新现有对象,而不是重新绑定新对象。当被监视对象发生变化时,它应该自动更新绑定元素,反之亦然。那看起来像这样:
var userData = { user: '' };
rivets.bind($('#profile'), userData);
$.ajax({
url: '/profile/update',
type: 'POST',
dataType: 'JSON',
data: $('form#user-form').serialize(),
success: function(response) {
userData.user = response;
$( "#toggleprofile" ).toggle("slow");
}
});