javascript - angualrjs中重复进行脏检查$digist?

查看:105
本文介绍了javascript - angualrjs中重复进行脏检查$digist?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

1.在更新数据的组件upadte方法中使用alert(),会显示提示变量污染,在火狐浏览器会显示报错信息,如图


谷歌浏览器中显示正常,并无报错信息。
2.anjular中组件的代码如下`angular

.module('yunZhi')
.component('teacherDetail', {
    templateUrl: 'yunzhi/teacher-detail.template.html',
    controller: ['$http', '$routeParams', function TeacherDetailController($http,$routeParams){
        this.id = $routeParams.id;
        var postData = {id:this.id};
        var HTTPpromise = $http.get('http://127.0.0.1/thinkphp5js/public/index/teacher/getCurTeacher', {params:postData});
        var self = this;
        HTTPpromise.success(function(response) {
            self.teacher = response;
        });
        this.update = function() {
            var postData = self.teacher;
            $http
                .get('http://127.0.0.1/thinkphp5js/public/index/teacher/update', {params: postData})
                .success(function(data) {
                    alert('更新成功');
                });
        };
    }]
});`

模板代码如下`<form>

<input type="hidden" ng-model="$ctrl.teacher.id">
<br/>name:
<input type="text" ng-model="$ctrl.teacher.name">
<br/>username:
<input type="text" ng-model="$ctrl.teacher.username">
<br/>sex:
<input type="text" ng-model="$ctrl.teacher.sex">
<br/>email:
<input type="text" ng-model="$ctrl.teacher.email">
<br/><button ng-click="$ctrl.update()">submit</button>

</form>`
服务器端的对应更新方法的代码如下:

`public function update()
 {
    $data = Request::instance()->param();

    $id = $data['id'];
    $Teacher = Teacher::get($id);

    $Teacher->name = $data['name'];
    $Teacher->username = $data['username'];
    $Teacher->sex = $data['sex'];
    $Teacher->email = $data['email'];

    if(false !== $Teacher->save()) {
        $respons['status'] = 'SUCCESS';
    } else {
        $respons['status'] = 'ERROR';
    }

    return $respons;
}`

3.同样情况下,用console.log()来打印 更新成功 的提示信息,就不会出现此类问题。初学angularJS,JS语法以及angular了解有限,希望可以通俗易懂的解释,提前感谢。
虽然,会报错,但是并不影响各方面功能的实现。
代码在没有更改的情况下,错误不见了,现在问题还没找到,就没了。也有可能是在编辑其他部分的时候更改了关联的代码。

解决方案

你这里的alert不会变量污染,看不清你的报错。建议直接贴报错的问题,或者上高清图。


报错的是脏检查重复。
你的button用的是ng-click,点击后触发点击事件。
同时button的默认type为submit,你没阻止默认等又触发了ng-submit事件。

建议不要给button加ng-click,而是给form加ng-submit

这篇关于javascript - angualrjs中重复进行脏检查$digist?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆