我在 Blazor 服务器应用程序中有一个奇怪的行为。
当我有一个对象列表并删除列表中的一个项目时,它会删除列表中的正确项目,但会将数据从最后一项复制到前面的一项。
仅当我将列表数据绑定到我自己的组件时才会发生这种情况。如果我将它直接绑定到输入元素,则不会发生这种情况。
我在一个小代码示例中重现了该行为,如下所示,只需尝试删除第二个项目并查看该行为。
谢谢谁能帮忙...
Blazor 标记
<table>
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (User user in _users)
{
<tr>
<td><MyText @bind-Value="user.Id"></MyText></td>
<td><MyText @bind-Value="user.Name"></MyText></td>
<td @onclick="(() => DeleteUser(user))">delete</td>
</tr>
}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
Blazor 代码
private List<User> _users = new List<User>();
private class User
{
public string Id { get; set; } = "";
public string Name { get; set; } = "";
}
protected override void OnInitialized()
{
_users.Add(new User() { Id = "1", Name …Run Code Online (Sandbox Code Playgroud) 我有一个用 Delphi 10.4 编写的可视化控件。为了方便地关注问题,我仅创建了具有 Anchors 和 Align 属性的 TwinControl。我包括了 AutoSize 属性。问题是当该组件构建安装并放置在 TForm 上时,控件将不会响应表单大小调整。
该控件已将控件设置为锚定正确。我向表单添加了一个 TButton,并将其锚点设置为 akRight。按钮随着表单的拉伸而移动。我的控制没有。我可以提供这个小测试的完整源代码。也许有人以前见过这个。我以前曾在我的组件中使用过 TFrame,但发现存在一些显示问题,仅部分控件显示或根本不显示。我的客户没有留下深刻的印象。我会欣赏一些智慧。
这是来自 TWinControl 的代码
unit SampleControl;
interface
uses
System.Classes, Vcl.Controls, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons, Vcl.Dialogs,
Vcl.Graphics,AdvGrid,vcl.Forms,System.SysUtils,StrUtils,Messages, EBS3DataUtils,
EBSGridSetup,System.UITypes,WinApi.Windows,vcl.Grids,AdvObj,System.Variants;
Type
TSampleControl = class(TWinControl)
private
FAnchors: TAnchors;
FAlign : TAlign;
FAutoSize : Boolean;
procedure InitializeComponents;
procedure SetAnchors(const Value: TAnchors);
procedure SetAlign(const Value: TAlign);
procedure SetAutoSize(const Value: Boolean);
Public
procedure Resize; Override;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
Published
property Anchors: TAnchors read FAnchors write SetAnchors default …Run Code Online (Sandbox Code Playgroud) 我需要将日历控件放在一个选项中.它必须适合一个非常小的地方.
如果我们有一些时间表,控件必须显示日期编号和颜色.
必须能够导航并选择:
应与数据库或手册集成.
简单,轻便,快速
我想在添加一些孩子后获得组件的实际高度.
在调试模式下检查变量选项卡时,我看到2个不同的高度变量:$ height(包含正确的值:138)和height/_height(包含错误的值:10).
我猜显示器没有更新,因此我没有使用component.height获得正确的高度,但是如何获得$ height的值?
感谢您提供的任何帮助=)
此致,BS_C3
@Flextras
再次,非常感谢您的回答!这真的很详细=)
Measuredheight并没有给我我正在寻找的值,而且explicitHeight没有值(NaN).我现在无法测试,所以我无法分辨出未缩放的高度......
这是我的结构:
MainContainer - Canvas
BOX1 - Canvas (height = 100)
BOX2 - Canvas (height = 100)
VariableBox - Canvas (height: depends on the height of it's variable number of children)
Text - TextArea
Run Code Online (Sandbox Code Playgroud)
我需要VariableBox的高度才能定位Text.
该函数如下所示:
updateDisplay(){
for(i;i<list.length;i++){
VariableBox.addChild(new HBox);
}
// reposition Text depending on VariableBox's height
}
Run Code Online (Sandbox Code Playgroud)
我知道我没有提供任何代码,但我现在不在我的工作电脑上> _ <
希望这可以帮助!!
我使用Cakephp 2.1,我需要从视图助手调用一个驻留在插件中的组件方法:
该组件在这里:
/app/Plugin/Abc/Controller/Component/AbcComponent.php
帮助者在这里:
/app/View/Helper/SimpleHelper.php
我试过里面的帮手:
App::import('Component', 'Abc.Abc');
$this->Abc = new Abc(); or $this->Abc = new AbcComponent;
Run Code Online (Sandbox Code Playgroud)
要么
$this->Abc = $this->Components->load('Abc.Abc');
Run Code Online (Sandbox Code Playgroud)
在控制器内部,这个组件没有问题.我知道这不推荐(MVC设计等),但如果我不这样使用它,我需要复制很多代码.我需要做类似的事情:
MyHelper extends Helper{
$simpleVar = Component->get_data();
}
Run Code Online (Sandbox Code Playgroud) 如何AnalogClock在app小部件中设置Android的自定义时间?
作为替代方案,我正在考虑覆盖默认的AnalogClock来设置代码的时间.换句话说,我会创建自定义时钟,它从默认的View或AnalogClock扩展.然后将我的自定义时钟放在小部件布局UI上.
这可能吗?我担心RemoteViews会限制我们自己的自定义组件.
更新: 这是错误日志我首先遵循vArDo给出的解决方案.

我制作了一个图形组件,祖先必须是TGraphiccontrol,因为我需要画到画布上.现在我想将此组件转换为activex控件,但这似乎只有当组件是TWincontrol的后代时才可能.我该如何解决这个问题?
我正在使用Vue.js 2.1.10和Bootstrap 3.3.7来显示打开另一个模式对话框的模式。每个模式对话框都包含在不同的组件中。在第一个组件内部,有对第二个组件(select-travler)的引用。
根据Bootsrap文档,我必须通过监听事件来设置焦点shown.bs.modal。将焦点设置在第一个模态中包含的输入控件上非常有用。问题:当模态在另一个模态之上时,这种方式不起作用。
第一个模态组件如下所示:
<template>
<div ref="tripEdit" class="modal fade" role="dialog">
<!-- Inbeded component -->
<select-travler ref="selectTravler"></select-travler>
<!-- /Inbeded component -->
<div class="modal-lg modal-dialog">
<div class="modal-content">
<div class="modal-body container form-horizontal">
<div class="form-group">
<label for="travler_name" class="control-label">
Travler's name
</label>
<input id="travler_name" ref="travler_name"
v-model="travler_name"/>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data () {
return {
travler_name: null,
}
},
methods: {
show (operationType) {
$(this.$refs.tripEdit).modal('show');
let that = this;
$(this.$refs.tripEdit).on('shown.bs.modal', …Run Code Online (Sandbox Code Playgroud) 使用Angular 6.0.7,我正在创建一个属性组件并将一个值注入其中。为此,我在这里回答。
我想知道是否有一种方法,就像在AngularJS中一样,可以直接在组件中输入值,而无需定义单独的[form]=""。例如:<div my-component="form">。
HTML
<form (ngSubmit)="login(loginForm.form.valid)"
#loginForm="ngForm"
validate-on-submit='"loginForm"'>
</form>
Run Code Online (Sandbox Code Playgroud)
属性组件
@Component({
selector: '[validate-on-submit="form"]',
template: `<ng-content></ng-content>`
})
export class ValidateOnSubmitComponent implements OnInit {
@Input() private form: NgForm;
public ngOnInit(): void {
console.warn(this.form);
}
}
Run Code Online (Sandbox Code Playgroud)
将console.warn(this.form)在“结果undefined”。
我想做什么
我试图将表单(通过变量#loginForm)注入组件,但是我不想进行其他绑定,例如[form]="loginForm"。根据此处的帖子,这应该是可能的,但我无法使其正常工作。自从更高的Angular版本以来,这种情况发生了变化吗?或者我在这里做错了什么?
我试过了
我试图@Input通过显式绑定将输入绑定到变量@Input('form') private form: NgForm,但这也导致了' undefined'。
我也尝试还原或更改引号validate-on-submit="loginForm"或validate-on-submit="'loginForm'",但是在某些尝试中,这导致Angular根本不协调组件选择器。
解
有了@ user184994的答案,我设法更改了代码并使它工作。这导致以下代码:
html
<form (ngSubmit)="login(loginForm.form.valid)"
#loginForm="ngForm"
[validate-on-submit]="loginForm"> …Run Code Online (Sandbox Code Playgroud) 如果存在某个Cookie(使用通用Cookie),则当用户退出应用程序时,我需要从浏览器中删除Cookie。
我有的代码:
componentWillUnmount(){
const cookies = new Cookies();
if(cookies.get("remember")==0){
cookies.remove("userName");
cookies.remove("password")
}
}
Run Code Online (Sandbox Code Playgroud)
适用于其他组件,但我只需要在根上将其触发即可在用户关闭应用程序之前触发。
当应用程序退出时,为什么componentWillUnmount不会触发?