store 39;s的听众多次开火
Store's listeners fired many times
在我的MVC 3应用程序中,我想在每次有新的可用数据时刷新部分视图。因此,为了从服务器端获取这些数据,我使用如下所示的componentLoader:
Panel lowerPanel = new Panel
{
Region = Region.South,
Layout = "fit",
ID = "WarningsPanel",
AutoScroll = true,
Loader = Html.X().ComponentLoader()
.Url(Url.Action("_warningsView"))
.Mode(LoadMode.Script)
.MessageBusDirectEvents(
new MessageBusDirectEvent()
{
Name = "Warnings.Update",
Action = "_warningsView",
Buffer = 1000,
ExtraParams = { new { containerId = "WarningsPanel" } }
}
)
.Params(new { containerId = "WarningsPanel" })
.LoadMask(l => l.ShowMask = true)
};
从服务器获得新数据后,我想调用一些javascript函数。所以我像这样设置我的局部视图:
@(Html.X().GridPanel()
.ID("WarningsGridPanel")
.EnableColumnResize(true)
.Store(Html.X().Store()
.DataSource(Model)
.Model(Html.X().Model()
.Fields(
Html.X().ModelField().Name("id"),
...
)
.Listeners(l =>
{
l.DataChanged.BroadcastOnBus = "Warnings.Register";
l.DataChanged.Buffer = 5000;
})
.MessageBusListeners(mbl => mbl.Add(new MessageBusListener { Name = "Warnings.Register", Fn = "WarningsStore.Register"}))
)
.ColumnModel(//Html.X().RowNumbererColumn().Align(Alignment.Center).Width(Unit.Pixel(30)),
Html.X().Column().Text("ID").DataIndex("id").Flex(1).Hideable(false),
...
)))
当第一次刷新部分视图时,我可以在控制台上看到WarningsStore.Register
JS函数被调用一次,但在第二次被调用两次第三次被称为3次……这就是我如何定义WarningsStore.Register
JS函数:
WarningsStore = WarningsStore || {};
WarningsStore.Register = function (message, id, eOpts) {...}
有什么问题吗?有很多商店吗?我定义JS函数在错误的方式?
每次你调用你的函数,你添加一个新的MessageBusListener。你应该只添加一次。
可能会有帮助我刚刚将MessageBusListeners属性Single设置为true
MessageBusListeners(mbl => mbl.Add(new MessageBusListener { Name = "Warnings.Register", Fn = "WarningsStore.Register", Single=true}))
相关文章:
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- Query JS Ext.data.Store
- 点击不'似乎没有开火
- 强制 $scope.$watch 只开火一次
- 回流:让多个组件访问同一个Store
- extjs关闭事件不'不要开火
- Safari扩展中的注入脚本;不要在Youtube上开火
- KeyDown不会'按住时不能连续开火
- Raphael JS事件未开火
- JQuery窗口调整大小;不要开火
- 谷歌地球回调未开火
- 在控制器中创建StandardListItem并在赢得的项目上按下事件'不要开火
- 提高敲除自定义绑定的效率(经常开火)
- 流星:onhashchange不会开火
- 相当于 Jquery/Backbone.js 中的 Dgrid/Store (Dojo 工具包)
- Onicecandidate 不会在第二台 PC 上开火
- Noob javascript,为什么这个开火是加载的
- $ionicPlatform.准备不开火
- 如何将数据从Ext.Store保存到数组
- store 39;s的听众多次开火