我正在尝试设置我的Angular应用程序以在一页上获取输入,然后在第二页上显示它。我正在使用ng-model将两个页面绑在一起。我希望通过对两个页面(存储值的页面)使用相同的控制器,该信息可以保存并显示在第二页上,但是会被擦除。

我做错了什么吗?在刷新页面之前,还有其他方法可以存储这些输入值吗?

厂:

angular.module('BSG').factory('airplaneFactory', function() {
    var name = '';
    var last_name = '';
    var color = '';

    return {
        name: name,
        last_name: last_name,
        color: color
    }
})


飞机控制器:

angular.module('BSG').controller('AirplaneCtrl', function($scope, airplaneFactory) {
    'use strict';

      $scope.name = airplaneFactory.name;
      $scope.last_name = airplaneFactory.last_name;
      $scope.color = airplaneFactory.color;

});


飞机提示控制器:

angular.module('BSG').controller('AirplanePromptsCtrl', function($scope, airplaneFactory) {
    'use strict';

      $scope.name = airplaneFactory.name;
      $scope.last_name = airplaneFactory.last_name;
      $scope.color = airplaneFactory.color;

});


路由:

    .when('/airplane', {
        templateUrl: 'templates/stories/airplane.html',
        controller: "AirplaneCtrl"
    })
    .when('/airplaneprompts', {
        templateUrl: 'templates/stories/airplane_prompts.html',
        controller: "AirplanePromptsCtrl"
    })


来自planet_prompts.html的摘录:

<h2>Who is this story about?</h2>
<p><input type="text" placeholder="name" ng-model="airplane.name"></p>

<h2>What is {{ airplane.name }}'s favorite color?</h2>
<p><input type="text" placeholder="favorite color" ng-model="airplane.color"></p>


来自planet.html的代码段:

Mine was {{ airplane.color }} and had a nametag on it that said {{ airplane.name }}

最佳答案

为每个页面新建一个控制器。
创建一个单独的服务来存储值。
每个控制器都使用此服务来获取/设置值。

查看主页https://angularjs.org/上的示例“为后端连接”(向下滚动)
Projects工厂是您的存储提供商。简单地将其从远程存储更改为本地存储

var myvalue;

09-25 18:46