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