フォームとボタンのある残り火(1.0.0-pre2)ビューがあります。フォームはビュークラスにバインドされており、フォーム入力の入力と入力値の収集が可能です。ボタンをクリックすると、フォームの値からdtoオブジェクトを作成し、コントローラーに送信します。ボタンのhtmlは次のとおりです
<input type="submit" value="Add" data-icon="plus" {{action addReport view.report target="controller"}} />
ビューコードは
ContentView: baseView.extend({
task: null, //initialized when form is filled in
report: function () {
var task = this.get('task');
if (task == null)
return null;
return reportModel.create({
taskId: task.id
});
}.property()
})
コントローラコードは
DayController: ember.Controller.extend({
addReport: function (evt) {
console.log(evt.context);
}
})
コードを実行すると、イベントコンテキストがnullになります。デバッガーを見るとreport
、ビューがレンダリングされるときに、計算されたプロパティが1回だけ実行されました。ボタンをクリックすると、計算されたプロパティは評価されません-コントローラーメソッドがすぐに呼び出されます。
非常によく似た構造が同じアプリケーションで正常に機能しますが、ビューが異なり、メソッドはコントローラーではなくルーターにあります。
<a href="#" {{action changeDate view.prevDate href=true}}>Prev</a>
見る:
HeaderView: baseView.extend({
prevDate: function () {
return addDays(this.get('_dataSource').date, -1);
}.property()
})
ボタンの何が問題になっていますか、リンクとは対照的にボタンが機能しないのはなぜですか?