Я работаю над приложением todo с использованием углового метеорного и ионного. У меня есть представление со входом и списком. Когда я нажимаю на редактирование, имя элемента должно появиться на входе, и вы его отредактируете, а затем примените. До сих пор все работает нормально, но после того, как вы применили изменение, текст, который вы ввели, застрял там, и если вы нажмете на другое todo для его редактирования, его заголовок не будет отображаться во входном файле, но если вы напишете что-нибудь и нажмите "Применить", он изменится.
вот код для представления:
<ion-view view-title="Task ongoing">
<ion-content>
<div class="item item-input-inset">
<label class="item item-input">
<input type="text" ng-model="n" placeholder="click on a task to edit it">
</label>
<button class="button button-balanced button-small"
style="margin:1%"
ng-click="editTask(n)">
<span class="glyphicon glyphicon-plus"></span> Apply</button>
</div>
<ion-item ng-repeat="t in todos | filter:'ongoing'">
{{t.name}} <strong>{{t.status}}</strong> <span class="badge" ng-click="enableEditTask(t)" >Edit</span>
<span class="badge" ng-click="makeTaskDone(t)" style="right: 67px" >Done</span>
</ion-item>
</ion-content>
</ion-view>
Вот код методов на сервере:
Meteor.methods({
makeDone:function(task){
Todos.update({_id:task._id},{$set:{status:'done'}});
},
editTask:function(name,task){
Todos.update({_id:task._id},{$set:{name:name}});
}
})
и здесь код на клиенте (угловой)
$scope.makeTaskDone=function(task){
Meteor.call('makeDone',task);
};
$scope.enableEditTask = function(task) {
$scope.task=task;
$scope.n=task.name;
};
$scope.editTask=function(name){
Meteor.call('editTask',name,$scope.task);
$scope.n="";
}
Я думаю, что проблема возникает после того, как Todos.update вызван, потому что, когда я пробовал, все работает нормально.
П: Я пробовал это с небезопасным пакетом, и та же проблема возникла.
Если вы вносите изменения в модель $scope
за пределами угловой, вы должны вызывать свой метод в $scope.$apply(...)
. Это настолько угловато, что может запускать дайджест и записывать изменения, а затем обновлять представление (ngDocs). Это относится ко всем асинхронным функциям, не вызываемым угловыми.