
Spine 函式庫
|
189
全域事件
Spine 能讓你繫結、觸發位於全域作用域的事件。這可說是一種 PubSub 模式的應用。這
個機制能讓彼此互不相識的控制器們,有機會互相溝通,藉此有效降低控制器之間的耦
合。如果想要實作出這樣的機制,做法很簡單:只要準備一組全域物件
Spine.App
,並
透過它來繫結、觸發所有的事件即可:
var Sidebar = Spine.Controller.create({
proxied: ["change"],
init: function(){
this.App.bind("change", this.change);
},
change: function(name){ /* ... */ }
});
如果想少打一點字,可以在控制器裡使用
Spine.App
的別名
this.App
。像前面這段程式
碼,就會把控制器(
Sidebar
)和全域事件(
change
)綁在一起。其他的控制器或 script
程式可以隨時觸發這組事件,並傳入一些額外的資訊:
Spine.App.trigger("change", "messages");
產製模式(Render Pattern)
在介紹完控制器裡的一些主要功能之後,接下來可以看一些較典型的使用案例。
如果想要將模型和檢視器綁在一起,有一種非常方便的做法,稱之為
產製模式
(
Render
Pattern
)。這種做法是在建立完控制器的物件實體之後,在控制器裡幫其所對應的模型,
設定事件監聽器。此後每當模型裡的資料有任何更動,都會觸發一組回叫函式,由 ...