javascript - angualrjs中重复进行脏检查$digist?
高洛峰
高洛峰 2017-04-10 17:32:43
[JavaScript讨论组]

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了解有限,希望可以通俗易懂的解释,提前感谢。
虽然,会报错,但是并不影响各方面功能的实现。
代码在没有更改的情况下,错误不见了,现在问题还没找到,就没了。也有可能是在编辑其他部分的时候更改了关联的代码。

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
天蓬老师

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


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

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

PHP中文网

controller: ['$http', '$window','$routeParams', function
$window注入进去,使用$window.alert应该没问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号