Javascript Can';当模型更新时,不要让Angularjs更新视图

Javascript Can';当模型更新时,不要让Angularjs更新视图,javascript,angularjs,view,model,Javascript,Angularjs,View,Model,我是一个棱角分明的新手,我被卡住了。我在jsbin.com上有一些代码-->() 这并不漂亮,但它从本质上显示了我在做什么。 在我的实际代码中,我使用$http.get调用RESTful后端从数据库加载数据,并使用$http.post调用添加到数据库。只要数据库获取和更新,所有这些都可以正常工作。但是,在我使用“创建”窗体创建一个新对象之后,如果我单击“列出所有”,我的Tornaments对象将不会更新 我不知道在$http.post调用之后是否需要$apply?我试过用它,但不是用错了,就是这

我是一个棱角分明的新手,我被卡住了。我在jsbin.com上有一些代码-->()

这并不漂亮,但它从本质上显示了我在做什么。 在我的实际代码中,我使用$http.get调用RESTful后端从数据库加载数据,并使用$http.post调用添加到数据库。只要数据库获取和更新,所有这些都可以正常工作。但是,在我使用“创建”窗体创建一个新对象之后,如果我单击“列出所有”,我的Tornaments对象将不会更新

我不知道在$http.post调用之后是否需要$apply?我试过用它,但不是用错了,就是这不是我的问题。我环顾四周,似乎找不到我问题的答案

如果有人能看出我做错了什么,我会非常感谢你的帮助

谢谢

这是有效的

这不是$apply或$diget问题。因为您将TournamentController放入了视图的一部分。一个是创造,另一个是展示。这使$scope.tournament的副本有所不同

因此,我添加了一个div来包装表单和表。把控制器放到它上面。删除窗体和表控制器


希望这能解决您的问题。:)

看看我在这里做的一些小改动:

更改是如何定义控制器的使用。您在两个不同的位置使用TournamentController,这实际上为您提供了该控制器的两个实例以及两个独立的、隔离的作用域。“列表所有”视图绑定到一个实例,而“创建”视图绑定到一个完全不同的实例

还有,你关于$apply的问题。作为一般规则,您应该很少使用$apply,并且永远不要在控制器中使用它,因为在那里使用它是不安全的。指令实际上是使用$apply的唯一安全的地方,即使在那里,也只有在数据被修改的范围超出范围时才应该使用它。根据事物处理的顺序,您会发现如果在控制器中使用$scope.$apply(),您经常会遇到关于已经处于摘要周期的异常