https://github.com/marionettejs/backbone.marionette/releases/tag/v2.0.0
-
API change:
Marionette.$.proxy
は削除されたので代わりにBackbone.$_
を使いましょう。 -
API change: APIの中にあった
type
という表記はclass
に置き換えられました。 -
regionType => regionClass
-
ChildViewType => ChildViewClass
-
triggerMethod
はイベントが発行される前に呼ばれるようになりました。render
というイベントが発行されたときに、以前はrender
イベントが呼ばれた後にonRender
メソッドが呼ばれていましたが、これが反対になって、onRender
メソッドが呼ばれた後にrender
イベントが発行されるようになりました。
-
jQuery(
Backbone.$
)のDeferredを使っていたところがMarionette.Deferred
が追加されて、それを呼ぶようになりました。 -
Marionette.Deferred
にはBackbone.$.Deferred
が代入されています。 -
JSHintのルールがより一貫性のあるものになりました。
-
Marionette.VERSION
のプロパティが追加されました。 -
ほとんどのクラスが
getOption
をインスタンスメソッドとして持つようになりました。Marionette.proxyGetOption
という新しいhelper関数が使われています。- ちなみに以前は
Marionette.getOption(this, ...)
をこのようにthisを渡して直接使用していました。
- ちなみに以前は
-
ほとんどのクラスが
bindEntityEvents
をインスタンスメソッドとして持つようになりました。Marionette.proxyBindEntityEvents
という新しいhelper関数が使われています。 -
ほとんどのクラスが
unbindEntityEvents
をインスタンスメソッドとして持つようになりました。Marionette.proxyUnbindEntityEvents
という新しいhelper関数が使われています。 -
含まれるMarionetteのビルドは2種類だけになりました。両方共UMDです。1つはMarionetteのcoreだけが含まれているバージョンで、もう1つはWreqrやBabysitterが含まれたバージョンです。
-
API change: Moduleの
initialize
の引数の順番がconstructor
と一貫性を持つように変更されました。 -
this.options, moduleName, app
だったのがmoduleName, app, options
になっています(constructor
も後者の順番)。 -
API change: Applicationの
initialize
時のtriggerMethods
がstart
に変更されました。もう少し説明すると、initialize:before
とinitialize:after
がbefore:start
とstart
になりました。単に名前が変更されただけです。 -
Applicationのメッセージングのシステムが"global"というチャンネル名を持ったものに変更されました。
-
こちらはBackbone.Wreqrに追加されたChannelの仕組みを使っています。
-
Applicationに
before:region:add
とbefore:region:remove
という2つのtriggerMethodが追加されました。 -
それぞれ
addRegion
とremoveRegion
の時に呼ばれます。
-
API change:
stopListening
がdestroy
のtriggerMethod
の後に呼ばれるようになりました。 -
以前はtriggerMethod(close)の前に呼ばれていました。
-
API change:
close
メソッドがdestroy
に変更されました。これはインスタンスを破棄したあとに再利用すべきでないことを強調するためです。 -
before:destroy
のtriggerMethodが追加されました。それによってControllerが破棄される前にonBeforeDestroy
で処理を差し込めるようになりました。
- Behaivorで
behaviors
としてBehaviroをまとめてることが出来るようになりました。Viewに定義するbehaviros
のようなものです。
var Input = Marionette.Behavior.extend({
behaviors: {
Modal: {},
FormValidation: {},
KeyBinding: {}
}
});
-
API change:
show
するときに存在しないelが指定されたときは例外を投げるようになりました。 -
以前はただ何も起きないだけでした。
-
Regionの
ensureEl
が_ensureElement
に変更されました。 -
API change: Regionでも
region.el
とregion.$el
がViewのように参照出来るようになりました。 -
この変更のため、もし
region.el
が文字列のセレクタであることに依存したコードを書いている場合は、region.$el.selector
を使うように更新する必要があります。 -
API change:
open
メソッドはattachHtml
に変更されました。 -
API change:
close
メソッドはempty
に変更されました。これはViewのclose
メソッドとは完全に異なるので。 -
Regionはコンテンツをクリアするときに
this.$el.empty()
ではなくて.innerHtml
を使うようになりました。 -
region.show
がviewのrender
のようにthis
を返すようになりました。 -
before
this.$el.empty().append(view.el);
- after
this.el.innerHTML='';
this.el.appendChild(view.el);
-
Regionに新しい2つのtriggerイベントが追加されました。
before:swap
とswap
で別のViewをshowする際に呼ばれます。 -
Regionの
el
にDOM node、DOM string selector、Jquery selectorが指定出来るようになりました。Viewのように。 -
すでに表示しているviewを再度
show
した時に、以前はrerenderされていましたが何もしなくなりました。強制的にrerenderさせたい時はforceShow: true
をregion.show
のオプションとして渡してください。
MyApp.mainRegion.show(myView, {forceShow: true});
-
Regions now fire a new triggerMethod,
before:destroy
, before they are destroyed -
???
before:destory
なんてRegionにはない気がする.... -
before:empty
の新しいtriggerMethodが追加されました。
getRegions
: RegionManagerが持っている全てのregionを配列で返します。LayoutViewやApplicationでももちろん使えます。
-
API change: LayoutはLayoutViewになりました。
-
API change:
close
メソッドがdestroy
に変更されました。close
だと再度openすることが出来るのではないかと混乱させてしまうためです。destroy
だと一度破棄するともう再利用出来ないことが明確です。 -
API change:
onBeforeClose
でfalseを返してもviewを閉じるのをキョンセル出来なくなりました。この振る舞いはMarionetteの他の部分と一貫性がなくて、全ての場合でこの挙動にしようとするととてもたくさんのロジックを書く必要があります。falseを返す代わりにdestory
が呼ばれる前にハンドリングしてください。 -
API change:
appendHtml
はattachHtml
に変更されました。appendBuffer
はattachBuffer
に変更されました。 -
API change: 重複していたり一貫性のない
itemView
のイベントは削除されました。この変更で失うものはなくて、prefixのついていないイベント代わりに使うことが出来ます。例えばitem:before:render
の代わりにbefore:render
を使うことが出来ます。
削除されたイベントの一覧(多分)
-
item:before:render
-
item:rendered
-
itemview:item:before:render
-
itemview:item:rendered
-
itemview:item:before:close
-
itemview:item:closed
-
item:before:destroy
-
item:destroyed
-
API change:
childEvents
のcallbackで第一引数にイベント名を受け取らなくなりました。その他のtriggerのcallbackとの一貫性を撮るためです。 -
API change: CollectionViewの各Viewは
itemView
からchildView
に変更されました。これはitemView
と混乱させないためです。全てのitemView
を参照していたCollectionViewのメソッドはchildView
を参照するようになっています。例えばgetItemView
はgetChildView
になりました。CompositeViewもCollectionViewを継承しているので同様です。 -
API change: CollectionViewとCompositeViewにあった
addChildView
は_onCollectionAdd
になってremoveItemView
は_onCollectionRemove
になりました。 -
API change: CompositeViewの
renderModel
は_renderRoot
になりました。 -
API change: CollectionViewとCompositeViewの
onChildRemove
は_onCollectionRemove
になりました。 -
Bug fix:
events
のハッシュの中でuiが補完されなかった問題が解決しました。 -
Bug fix:
delegateEvents
を読んで動的にuiを追加してそれをevents
のハッシュで使った場合でも上手く動作するようになりました。 -
HTMLをDOMに追加するときに
attachElContent
をオーバーライドすることで一般的ではない最適化も出来るようになりました。これはItemView、LayoutView、CompositeViewなど全てのViewのtemplateで使用出来ます。 -
$el.html
の代わりにinnerHTML
を使う例です。
attachElContent: function(html) {
this.el.innerHTML = html;
return this;
}
-
CollectionViewに
before:remove:child
が追加されました。 -
CollectionViewとCompositeViewが
collection
のcomparatorを尊重してrenderするようになりました。新しいviewを追加するときはrerenderするときなどはcomparatorに応じた並び順になります。 -
この挙動が好ましくない場合は
sort: false
のオプションを渡すことで無効にすることが出来ます。 -
CollectionViewとCompositeViewに
emptyViewOptions
が渡せるようになってemptyViewをカスタマイズ出来るようになりました。 -
LayoutViewでは
getRegionManager
を使うことでカスタムのRegionManagerを使うことが出来るようになりました。 -
LayoutViewでインスタンス化する際にも
regions
を指定出来るようになりました。以前は新しいLayoutViewのclassを作る必要がありました。
new Marionette.LayoutView({
regions: {
"cat": ".doge",
"wow": {
selector: ".such",
regionClass: Coin
}
}
})
- LayoutViewが
regionOptions
という新しいプロパティを持つようになりました。これはregion
が作られる際に使用されます。
-
MyClass.prototype.constructor
としていた部分をシンプルにMyClass
で参照するようになりました。 -
ユニットテストフレームワークを
Jasmine
からMocha
に変更しました。 -
全てのPRのコードは
coveralls
で計測されるようになりました。これは私達にテストとのズレを特定するための統計を提供してくれます。 -
さらに詳しく見るにはこちらを参照してください。 https://github.com/Puppets/marionette-changelog-detail.