【问题标题】:Angular-meteor: changing model value doesn't change viewAngular-meteor:改变模型值不会改变视图
【发布时间】:2016-07-09 06:27:31
【问题描述】:

我正在开发一个使用 angular-meteor 和 ionic 的待办事项应用程序。 我有一个带有输入和列表的视图。 当我点击编辑时,项目的名称应该出现在输入中并且你编辑它,然后你申请。 到目前为止,一切正常,但是在应用更改后,您输入的文本会卡在那里,如果您单击另一个待办事项进行编辑,其标题不会显示在输入中,但是如果您写了一些东西并且点击应用,它会改变。

这是视图的代码:

<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 被调用之后,因为当我尝试不使用时,一切正常。

Ps:我用不安全的包试过了,同样的问题出现了。

【问题讨论】:

    标签: angularjs meteor ionic-framework angular-meteor


    【解决方案1】:

    如果您在 Angular 之外对 $scope 模型进行更改,您应该在 $scope.$apply(...) 中调用您的方法。如此 Angular 可以运行摘要并获取更改然后更新视图 (ngDocs)。这适用于所有未被 angular 调用的异步函数。

    【讨论】:

      猜你喜欢
      • 2020-08-25
      • 2020-09-17
      • 1970-01-01
      • 2017-05-06
      • 2021-05-21
      • 2020-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多