मुझे शुरुआत में बैकबोन व्यू के टेम्पलेट को सेट करने की आवश्यकता है, इस पर आधारित है कि उपयोगकर्ता द्वारा चुनी गई तिथि अतीत या भविष्य में है या साथ ही बाद में स्विच करें जब संग्रह संग्रह अलग-अलग तारीख से डेटा खींचता है। मैं यह कैसे करु? मैंने सोचा कि मैं टेम्पलेट को ऐसे फ़ंक्शन पर सेट करने में सक्षम हूं जो सही चयनकर्ता स्ट्रिंग देता है कि मैं अतीत में हूं या नहीं, लेकिन यह काम नहीं करता है।बैकबोन गतिशील रूप से टेम्पलेट्स स्विच करें
pR.views.ScheduleJobView = Backbone.Marionette.ItemView.extend({
tagName: "tr",
// NEED A WAY TO SWITCH THIS TOO
template: "#schedule-job-template"
});
pR.views.ScheduleJobsView = Backbone.Marionette.CompositeView.extend({
// DOESN'T WORK
template: function() {
if (this.isPast)
return "#schedule-jobs-past-template";
else
return "#schedule-jobs-template";
}, itemView: pR.views.ScheduleJobView,
itemView: pR.views.ScheduleJobView,
itemViewContainer: "tbody",
// Defaults for the model's url
baseUrl: "/schedules/day/",
baseApiUrl: "/api/schedule/day/",
// Empty object to store url parameters
urlParameters: {},
initialize: function() {
pR.vent.bindTo("change:parameters", this.changeUrl, this);
this.model.url = this.baseApiUrl;
},
onRender: function() {
console.log("Rendering Jobs View");
},
// Change the main model's url
changeUrl: function (parameters) {
// merge new parameters with old ones
this.urlParameters = _.extend(this.urlParameters, parameters);
var url = "";
var apiUrl = this.baseApiUrl;
_.each(this.urlParameters, function (value, parameter) {
// Add each parameter segment to the url
url = url + parameter + '/' + value + '/';
apiUrl = apiUrl + parameter + '/' + value + '/';
});
this.model.url = apiUrl;
console.log("Updated CurrentDay model url to " + apiUrl);
this.model.fetch();
console.log("Navigating to " + url);
pR.routers.appRouter.navigate(url);
},
// Check if we are in the past
isPast: function() {
var year = this.urlParameters.year;
var month = this.urlParameters.month;
var day = this.urlParameters.day;
var selectedDate = Date(year, month, day);
if (selectedDate < Date()){
return true;
} else {
return false;
}
}
});
ध्यान दें कि मैं कठपुतली के समग्र विचारों यहाँ भी उपयोग कर रहा हूँ, इसलिए मैं साथ ही समय सीमा के आधार पर itemView के टेम्पलेट को बदलने के तरीके की जरूरत है। अगर मेरी मूल रणनीति खराब तरीके से सोची जाती है तो मैं निश्चित रूप से इस पर पहुंचने के लिए खुली हूं।
कूल, कि काम करता है! मैंने सोचा कि मैंने ऐसा कुछ करने की कोशिश की है, लेकिन मैंने कुछ गलत किया होगा। क्या आपके पास टाइमफ्रेम के आधार पर आइटम दृश्य का टेम्पलेट सेट करने का कोई तरीका है? –
बस एक नोट: मैरियनेट एक टेम्पलेट के लिए एक फ़ंक्शन स्वीकार करने के लिए प्रयुक्त होता है जो गतिशील चयनकर्ता को वापस लाएगा। अब यह स्वीकार करता है कि फ़ंक्शन संकलित टेम्पलेट फ़ंक्शन के रूप में उपयोग किया जाता है। – jsoverson
यह मेरे लिए काम किया। आप इसे किसी अन्य फ़ंक्शन में भी कर सकते हैं और इसे बाद में भेज सकते हैं।() बाद में और यह टेम्पलेट को स्विच करेगा। मजेदार चीजें! –