Angular-meteor: изменение значения модели не меняет вид

0

Я работаю над приложением todo с использованием углового метеорного и ионного. У меня есть представление со входом и списком. Когда я нажимаю на редактирование, имя элемента должно появиться на входе, и вы его отредактируете, а затем примените. До сих пор все работает нормально, но после того, как вы применили изменение, текст, который вы ввели, застрял там, и если вы нажмете на другое todo для его редактирования, его заголовок не будет отображаться во входном файле, но если вы напишете что-нибудь и нажмите "Применить", он изменится.

Изображение 174551

вот код для представления:

<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 вызван, потому что, когда я пробовал, все работает нормально.

П: Я пробовал это с небезопасным пакетом, и та же проблема возникла.

Теги:
ionic-framework
meteor
angular-meteor

1 ответ

0

Если вы вносите изменения в модель $scope за пределами угловой, вы должны вызывать свой метод в $scope.$apply(...). Это настолько угловато, что может запускать дайджест и записывать изменения, а затем обновлять представление (ngDocs). Это относится ко всем асинхронным функциям, не вызываемым угловыми.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню