gpt4 book ai didi

backbone.js - 如何使用 Backbone Events/Vent 更改 Backbone 动态 URL?

转载 作者:行者123 更新时间:2023-12-02 08:40:26 28 4
gpt4 key购买 nike

在下面编辑了这个

在下图中,我有两个主要区域。

左边的用户列表:allusersRegion

另一个用于显示布局的右侧,其中包含在 allusersRegion 中单击的用户的唯一属性和用户的文章列表:middleCoreRegion

**如果您注意到 middleCoreRegion 正在显示所有用户的所有文章..这是错误的,我正在尝试显示单个用户的所有文章(在本例中为“kev”)

enter image description here

我试图查看我的问题是出在我的 JSON api(通过 node/rest/mongoose 提供)还是我的下划线模板,但如果它同时显示两个列表,那么我想我需要从主干内部进行过滤。

起初我尝试使用 Marionette.vent 来简单地更改 url,但不知为何我无法将 _id 名称放入 url:function(),它说未定义...

var someuser = this.model.get("_id"); 
myApp.vent.trigger("showarticles", someuser);

我在同一页面的 Backbone 集合中添加了一个监听器:

myApp.vent.on("showarticles", someuser);

**编辑(另一种方式)这是我的代码

var usertab = Poplive.module('usertab', {
startWithParent: true,
});

usertab.addInitializer(function() {

User = Backbone.Model.extend({});
UniqueArticle = Backbone.Model.extend({});

//Collections
Users = Backbone.Collection.extend({
model: User,
url: '/api/user2'
});

UniqueArticles = Backbone.Collection.extend({
model: UniqueArticle,
url: '/api/survey'
});

//Layout
var VisitingLayoutView = Backbone.Marionette.Layout.extend({
template: "#visiting-layout",
regions: {
firstRegion: "#listone",
secondRegion: "#listtwo",
thirdRegion: "#listthree",
playRegion: "#playhere",
articlesRegion: "#articleshere"
}
});

AllUserView = Backbone.Marionette.ItemView.extend({
template: "#tab-alluser-template",
tagName: 'li',
events: {
"click #openprofile" : "OpenProfile"
},

OpenProfile: function(){
console.log("Profile is open for " + this.model.get("username"));
var modelo = this.model.get("_id");
var vlv = new VisitingLayoutView({model: this.model});
Poplive.middleCoreRegion.show(vlv);

var ua = new UniqueArticles();
var uacoll = new UniqueArticlesView({collection: ua});
vlv.articlesRegion.show(uacoll);
}
})

//ItemViews
UniqueArticleView = Backbone.Marionette.ItemView.extend({
template: "#unique-article-template"
});

//CollectionViews
AllUsersView = Backbone.Marionette.CompositeView.extend({
template: "#tab-allusers-template",
itemView: AllUserView
});

UniqueArticlesView = Backbone.Marionette.CollectionView.extend({
template: "#unique-articles-template",
itemView: UniqueArticleView
});

//Render Views
var alluserview = new AllUserView();
var allusersview = new AllUsersView();

//Fetch Collections
var theusers = new Users();
theusers.fetch();
var userscoll = new AllUsersView({collection: theusers});
Poplive.allusersRegion.show(userscoll);
});

最佳答案

假设 UniqueArticle 是主干模型,要获取具有特定 id 的模型,您需要定义 urlRoot 属性,该属性将附加 id请求的模型。

因此,当您对其进行提取时,id 属性将附加到从服务器请求模型的末尾

  var UniqueArticle = Backbone.Model.extend({
idAttribute : 'someuser',
urlRoot : function(someuser){
return '/api/visitingarticles/'
}
// this would send a request for
// /api/visitingarticles/someId
});

var UniqueArticles = Backbone.Collection.extend({
model: Article,
url : function(someuser){
return '/api/visitingarticles/'
}
// /api/visitingarticles -- All Articles will be fetched
});

关于backbone.js - 如何使用 Backbone Events/Vent 更改 Backbone 动态 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16969332/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com