我有一张<contenteditable>
<td>
的表格,我想只在发生变化时创建警报但我无法让它工作......当我尝试比较价值时我最终将它与自己(我认为)进行比较,并始终发出警报。
这是我的功能:
$scope.saveCron = function(userId,scriptId,cronFormat){
var pre = cronFormat;
$.post("updateCronChange.php","user_id="+userId+"&script_id="+scriptId+"&cron_format="+cronFormat, function(data){
$scope.demoData = userId + scriptId + cronFormat;
angular.equals(pre,cronFormat){
alert("user script settings table update the cron format to:"+cronFormat);}
});
}
这是我的表:
<table class="table table-bordered table-hover" ng-
controller="tableCtrl">
<thead>
<th>user name</th>
<th>script name</th>
<th>cron format<span class="glyphicon glyphicon-question-sign" data-toggle="tooltip" data-original-title="Min|Hour|Day Of Month|Month|Day Of Week"></span></th>
</thead>
<tbody ng-repeat="(user_id,script_id) in data">
<tr ng-repeat="(script_id, cron_format) in script_id">
<td class="userName">{{user(user_id)}}</td>
<td class="scriptName">{{script(script_id)}}</td>
<td class="cronFormat"><input type="text" ng-model="cron_format" ng-blur="saveCron(user_id,script_id,cron_format)"/></td> </tr>
</tbody>
</table>
每当moustout输入字段时调用该函数。如果用户在cron_format中更改数据,我可以显示警告吗?
更新功能
答案 0 :(得分:0)
你可以这样做到cron格式行
<td class="cronFormat"><input type="text" ng-model="data.cronFormat"></td>
并将其用于您的javascript:
$scope.data = {};
$scope.$watch('data.cronFormat',function(){
alert('something is happening');
});
这将监视data.cronFormat的更改并更新每次更改,ng-model将您的输入绑定到$ scope变量。你应该添加数据。如果你应该使用指令来防止麻烦,请阅读更多https://docs.angularjs.org/guide/scope
如果你只需要完全改变它就可以像这样尝试
<td class="cronFormat"><input type="text" ng-model="data.cronFormat" ng-focus="storeOld()" ng-blur="checkNew()"></td>
Javascript:
$scope.data = {}
var old = '';
$scope.storeOld = function(){
old = $scope.data.cronFormat;
};
$scope.checkNew = function(){
if(old != $scope.data.cronFormat){
alert('it has changed');
}
};
这将在用户选择输入时存储旧值,并在用户离开输入时检查它是否已更改。
答案 1 :(得分:0)
在观看中使用旧值和新值: -
$scope.$watch('data.cronFormat',function(new,old){
if(new!=old){
alert('it has changed');
}
});
而是在ng-blur的位置使用ng-change:)