gpt4 book ai didi

javascript - 关闭对话框后如何更改值( Angular Material )?

转载 作者:行者123 更新时间:2023-12-03 04:25:28 26 4
gpt4 key购买 nike

我想在关闭网络应用程序中的 md-dialog 后更改列表中的值。这意味着,首先单击一行,然后它会打开一个由 Angular Material 定义的对话框。在我更改此调用对象中的值并单击“确定”后,需要在列表中更新该值。目前它是异步工​​作的。当对话框 View 中的值发生更改时,在我单击“确定”之前,它会立即在列表中更改。

当我使用单个变量测试我的方法时,它的工作原理如下面的代码所示:

//Main view:

<div class="md-padding">
<p>{{c.txtSample}}</p>

<md-button class="md-raised md-primary" ng-click="fc.openDialog(c.txtSample)">
Klick
</md-button>
</div>


//dialog view:
<div class="md-dialog-container">
<md-dialog>
<md-dialog-content class="md-dialog-content">
<md-input-container class="md-block">
<label>Sample text</label>
<input ng-model="c.textInput" />
</md-input-container>
</md-dialog-content>

<md-dialog-actions>
<md-button class="md-raised" ng-click="c.klickOK(c.textInput)">
OK
</md-button>
</md-dialog-actions>
</md-dialog>
</div>

//MainCtrl
vm.txtSample = 'Change the inputtext.';
vm.openDialog = openDialog;

function openDialog(item) {
$mdDialog.show({
parent: angular.element(document.body),
templateUrl: 'App/views/testDialog.html',
controller: function TestCtrl($scope, sampleTxt) {
var vm = this;

vm.textInput = sampleTxt;
vm.klickOK = klickOK;

function klickOK(item) {
$mdDialog.hide(item);
}
},
controllerAs: 'c',
preserveScope: true,
locals: {
sampleTxt: item
}
}).then(function (item) {
vm.txtSample = item;
}, function () {
alert('Abgebrochen');
});
}

但是对于列表值来说它不起作用。我不知道为什么......这里是带有选定行的代码示例:

//Main view:
<div class="md-padding">
<div ng-repeat="wert in fc.werteliste track by $index">
<span flex="20">{{wert.wert1}}</span>
<span flex="20">{{wert.wert2}}</span>
<span flex="40">{{wert.wert3}}</span>

<md-button class="md-raised md-primary" ng-click="fc.openDialog(wert)">
Klick
</md-button>
</div>
</div>

//Dialog view:
<div class="md-dialog-container">
<md-dialog>
<md-dialog-content class="md-dialog-content">
<md-input-container class="md-block">
<label>Wert 1</label>
<input ng-model="c.textInput.wert1" />
</md-input-container>

<md-input-container class="md-block">
<label>Wert 2</label>
<input ng-model="c.textInput.wert2" />
</md-input-container>

<md-input-container class="md-block">
<label>Wert 3</label>
<input ng-model="c.textInput.wert3" />
</md-input-container>
</md-dialog-content>
<md-dialog-actions>
<md-button class="md-raised" ng-click="c.klickOK(c.textInput)">
OK
</md-button>
</md-dialog-actions>
</md-dialog>
</div>

//MainCtrl:
vm.openDialog = openDialog;

function openDialog(item) {
$mdDialog.show({
parent: angular.element(document.body),
templateUrl: 'App/views/testDialog.html',
controller: function TestCtrl($scope, objItem) {
var vm = this;

vm.textInput = objItem;

vm.klickOK = klickOK;
function klickOK(item) {
$mdDialog.hide(item);
}
},
controllerAs: 'c',
preserveScope: true,
locals: {
objItem: item
}
}).then(function (item) {
//e.g. the first item
vm.werteliste[0] = item;
}, function () {
alert('Abgebrochen');
});
}

有人可以帮我吗?

最佳答案

如果要将项目添加到数组的前面,请使用 unshift() 方法将项目添加到数组的开头。 vm.werteliste.unsift(item);

我怀疑问题是您将 wert 传递到对话框中,而不是 fc.werteliste

希望有帮助

关于javascript - 关闭对话框后如何更改值( Angular Material )?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43760394/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com