Angularjs 如果按下后退按钮,不加载控制器

Angularjs don't load controller if press back button

我是 AngularJS 的新手。

我有两个观点,第一个是针对客户的,另一个是针对城市的。客户视图有一些基本字段来添加有关客户的信息,包括添加新城市的按钮。

如果我按下 "add new city" 按钮,则会呈现添加新城市的视图。此后,当我返回客户视图时,之前输入的所有信息都丢失了。

如何保存这些信息?

使用 ng-show 显示城市视图,并在添加城市后使用 ng-hide 隐藏它。

如果您正在寻找状态维护,请实施 $route

原因是您在具有相同父控制器的页面之间按下后退按钮。为页面添加不同的控制器将解决您的问题。

您可以在包含客户信息的表格后添加类似这样的内容。一切都在同一个模板和同一个控制器中完成,所以没有路由切换。

请注意,当您键入该字段时,city 模型会立即更新。如果你不想要这个,你可以在范围内实现一个 saveCity 方法,将城市模型写入另一个模型并通过 ng-click="saveCity().

调用它
<div ng-hide="citySaved">    
  <input type="text" ng-model="city" />
  <button type="button" ng-click="citySaved = true">Save city</button>
</div>

当您访问视图时,angular 会再次实例化控制器,因此如果您希望数据持久化在应用程序中,您应该使用服务,并将数据存储在那里。 所以当控制器被实例化时,控制器会从服务中加载数据。