在我的Ember应用程序中,我有大量的模态对话框组件,我在我的应用程序路径中呈现如下:
sendAction
所有对话框组件都从单个基类扩展,为方便起见,我已覆盖target
。覆盖的重点是始终触发sendAction
上的某些操作,而不是sendAction: function (actionName) {
if (Em.isEmpty(this.get(actionName))) {
this.set(actionName, actionName);
}
this._super(...arguments);
},
的默认行为"如果属性是未定义,什么都不做"。这是看起来像:
sendAction
这看起来像我期望的那样工作:总是在目标上触发一个动作然后冒泡堆栈。我想知道的是......
我不知道覆盖protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//find the gridview in the master page
GridView gv = Master.FindControl("GridView1") as GridView;
//add the event to the gridview
gv.RowDataBound += GridView1Master_RowDataBound;
gv.DataSource = mySource;
gv.DataBind();
}
}
protected void GridView1Master_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
e.Row.BackColor = Color.Red;
}
}
的任何影响/副作用吗?
答案 0 :(得分:0)
目前,处理组件中操作的一种更被接受的方法是通过关闭操作:
在模板中:
{{do-button id="save" clickHandler=(action "storeEvent") contextMenuHandler=(action "logEvent") buttonText="Store It"}}
在组件中:
import Ember from 'ember';
export default Ember.Component.extend({
actions: {
clickHandler(event) {
this.get('clickHandler')(event);
},
contextMenuHandler(event) {
event.preventDefault();
this.get('contextMenuHandler')(event);
}
}
});
最后,来自控制器的摘录:
actions: {
doStuff(event) {
alert(event);
},
logEvent(event) {
console.log(event);
},
所以基本上,你正在将传递给组件的动作调用它,从组件中传入你想要的任何参数。关闭动作非常好,它们使动作更轻松。希望这会让你的车轮转动:)