Ali*_*ian 5 blazor blazor-server-side
我有一个可编辑的表单,首先组件渲染,一切正常,但是当我离开页面并返回时,它会引发“没有 id 'x' 的跟踪对象。也许 DotNetObjectReference 实例已经被释放。”
OnAfterRenderAsync 方法:
private DotNetObjectReference<Groups> _objRef;
protected override async Task OnAfterRenderAsync(bool firstRender)
{
await base.OnAfterRenderAsync(firstRender);
if (firstRender)
{
_objRef = DotNetObjectReference.Create(this);
await JSRuntime.InvokeVoidAsync("JSFun", _objRef);
}
}
Run Code Online (Sandbox Code Playgroud)
JSInvoke 方法:
[JSInvokable]
public void UpdateModel(string Id)
{
Group = GroupService.Get(new Guid(Id));
StateHasChanged();
}
Run Code Online (Sandbox Code Playgroud)
处置方法:
public void Dispose()
{
_objRef?.Dispose();
}
Run Code Online (Sandbox Code Playgroud)
Javascript方法:(在第二页渲染中出现错误)
$(document).on('click', '.btnEdit', function () {
instance.invokeMethodAsync('UpdateModel', Id).then(c => {
editModal.modal('show');
});
});
Run Code Online (Sandbox Code Playgroud)
更新 我通过将事件处理程序从 $(document).on('click' 更改为wrapperInstance.on('click' 来解决问题,其中wrapperInstance 是我当前组件的包装器:
var 包装器 = $("#wrapper"); 包装器.removeClass(); wrapper.addClass(“包装器”+实例[“_id”]); varwrapperInstance = $(".wrapper" + instance["_id"]);
请注意,我已经向我的组件添加了一个包装器,如下所示:
<div id="wrapper">
component content
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4705 次 |
| 最近记录: |