对话没有关闭

时间:2016-09-15 12:17:54

标签: javascript html angularjs

我有一个弹出窗口,您可以在其中向数据库添加内容。但是,当您在名称字段中单击时,我在控制台中收到错误,说:

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();
        }

1 个答案:

答案 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();
                }