我有一个弹出窗口,您可以在其中向数据库添加内容。但是,当您在名称字段中单击时,我在控制台中收到错误,说:
VM247 1:1 Uncaught TypeError: Cannot set property 'result' of undefined
如果您仍然在框中输入文本/数字并按保存,则弹出窗口即会加载。但是,刷新视图时,实体将保存到数据库中。
任何人都知道原因吗?
这是html:
<div class="row">
<md-input-container class="md-block" flex-gt-xs>
<label>Name</label>
<input ng-model="csc.user.newEntry.Name" onfocus="csc.saveData.result = ''" />
<div ng-messages="csc.user.newEntry.Name.$error" ng-show="csc.saveData.result < 0">
<div>Duplicate Name</div>
</div>
</md-input-container>
</div>
角:
saveEntry: function () {
vm.savingActivated = true;
vm.saveData = EntriesResource.save(vm.user.newEntry,
() => {
vm.savingActivated = false;
console.log(vm.saveData.result);
if (vm.saveData.result > 0) {
$rootScope.$broadcast("EntriesUpdated");
$mdDialog.hide();
}
答案 0 :(得分:0)
由于您在模板逻辑中使用了对象的属性,因此对象本身必须在引用其成员时存在。
当您专注于输入时,您将使用onfocus
创建它。
在之前初始化它或尝试更改ngShow
中的表达式以使用对象本身而不是其属性。
saveEntry: function () {
vm.savingActivated = true;
// intializeing
vm.saveData = {};
vm.saveData = EntriesResource.save(vm.user.newEntry,
() => {
vm.savingActivated = false;
console.log(vm.saveData.result);
if (vm.saveData.result > 0) {
$rootScope.$broadcast("EntriesUpdated");
$mdDialog.hide();
}