首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular-meteor:更改模型值不会更改视图

Angular-meteor:更改模型值不会更改视图
EN

Stack Overflow用户
提问于 2016-03-22 19:28:49
回答 1查看 125关注 0票数 0

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

以下是视图的代码:

代码语言:javascript
复制
<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>

下面是服务器中的方法代码:

代码语言:javascript
复制
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}});
        }
    })

这里是客户端的代码(angular)

代码语言:javascript
复制
$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:我用不安全的包试过了,同样的问题也出现了。

EN

回答 1

Stack Overflow用户

发布于 2016-03-22 20:27:39

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36153185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档