ব্যাকবোন থেকে বিশেষায়িত বেস কন্সট্রাক্টর তৈরি করা কি সহজ হবে না iew দেখুন যা ঘটনাক্রমের উত্তরাধিকারকে পরিচালনা করে।
BaseView = Backbone.View.extend {
# your prototype defaults
},
{
# redefine the 'extend' function as decorated function of Backbone.View
extend: (protoProps, staticProps) ->
parent = this
# we have access to the parent constructor as 'this' so we don't need
# to mess around with the instance context when dealing with solutions
# where the constructor has already been created - we won't need to
# make calls with the likes of the following:
# this.constructor.__super__.events
inheritedEvents = _.extend {},
(parent.prototype.events ?= {}),
(protoProps.events ?= {})
protoProps.events = inheritedEvents
view = Backbone.View.extend.apply parent, arguments
return view
}
এটি আমাদের যখনই পুনরায় সংজ্ঞায়িত প্রসারিত ফাংশনটি ব্যবহার করে একটি নতুন 'সাবক্লাস' (চাইল্ড কনস্ট্রাক্টর) তৈরি করে তখন ইভেন্টগুলি হায়ারাকির নিচে হ্রাস (সংহতকরণ) করতে দেয়।
# AppView is a child constructor created by the redefined extend function
# found in BaseView.extend.
AppView = BaseView.extend {
events: {
'click #app-main': 'clickAppMain'
}
}
# SectionView, in turn inherits from AppView, and will have a reduced/merged
# events hash. AppView.prototype.events = {'click #app-main': ...., 'click #section-main': ... }
SectionView = AppView.extend {
events: {
'click #section-main': 'clickSectionMain'
}
}
# instantiated views still keep the prototype chain, nothing has changed
# sectionView instanceof SectionView => true
# sectionView instanceof AppView => true
# sectionView instanceof BaseView => true
# sectionView instanceof Backbone.View => also true, redefining 'extend' does not break the prototype chain.
sectionView = new SectionView {
el: ....
model: ....
}
একটি বিশেষ দৃষ্টিভঙ্গি তৈরি করে: বেসভিউ যা প্রসারিত ফাংশনটিকে নতুন করে সংজ্ঞায়িত করে, আমাদের এমন সাবউভিউ থাকতে পারে (যেমন অ্যাপভিউ, সেকশনভিউ) যা তাদের পিতামাতার দৃশ্যের ঘোষিত ইভেন্টগুলি কেবল বেসভিউ বা এর কোনও ডেরিভেটিভ থেকে প্রসারিত করে তা করতে চায়।
আমরা আমাদের সাবভিউগুলিতে প্রোগ্রামের ক্রিয়াকলাপ হিসাবে আমাদের ইভেন্ট ফাংশনগুলি সংজ্ঞায়িত করার প্রয়োজনীয়তা এড়াতে পারি, যা বেশিরভাগ ক্ষেত্রে স্পষ্টতই পিতামাত্ত নির্মাণকারীকে উল্লেখ করা প্রয়োজন।