残り火: 1.10.0
Ember データ : 1.0.0-beta.16
jQuery: 1.11.2
次のようにコントローラーでビューを動的に作成するために、 this.container.lookup を使用しています。
var popup = this.container.lookup('view:map-popup', {singleton: false});
var ctrl = this.container.lookup('controller:map-popup', {singleton: false});
popup.set('controller', ctrl);
popup.createElement();
ビューは次のように定義されます。
export default Ember.View.extend({
templateName: "mapPopup",
classNames: ["map-popup"]
});
ビュー テンプレート:
<a class="popup-closer" {{action 'closePopup'}}></a>
<div class="popup-content">{{content}}</div>
およびビューのコントローラー:
export default Ember.ObjectController.extend({
hide: function() {
console.log("i'm hidden");
},
actions: {
closePopup: function() {
this.hide();
}
}
});
ビューは、コントローラーによって DOM に正しく挿入されます。
<div class="ember-view map-popup" id="ember643">
<a data-ember-action="645" class="popup-closer"></a>
<div class="popup-content">571187.3674937992,5721182.413928764</div>
</div>
しかし、ポップアップクローザーをクリックしても何も起こりません。
アクションをビューのコントローラーにバインドする方法を誰かが教えてくれたらうれしいです。
アルバートのアドバイスに従って、コンポーネントをセットアップしようとしました。
//app/components/map-popup.js
export default Ember.Component.extend({
classNames: ['map-popup'],
layoutName: 'components/map-popup',
content: function() {
return "some content";
},
hide: function() {
console.log('hidden');
},
actions: {
closePopup: function() {
this.hide();
}
}
});
テンプレートは同じです。前と同じですが、templates/components フォルダーにあります。
結果は以前より最悪です。コンテンツテキストではなくテキストとして関数を表示するポップアップが表示されます...
アクションがトリガーされます。コンテンツが表示されないという問題は、jquery を使用して解決されました。
setUp: function() {
this.$('.popup-content').html(this.content());
}.on('didInsertElement'),
ハンドルバーで {{content}} を一方向にバインドしたいのですが、これを行う方法がわかりません。