【问题标题】:How to pass data from one view to another with Angular如何使用 Angular 将数据从一个视图传递到另一个视图
【发布时间】:2016-09-24 00:08:49
【问题描述】:

我需要在视图之间传递数据。我有一个视图,您可以在其中检查项目,然后在另一个视图中您可以检查的那些项目被放置。问题是当您重定向到另一个页面时您会丢失所有数据,因此我会丢失检查项目上的所有数据。

可能的解决方案?:

调用数据库保存所有项目,然后在完成后删除(似乎对服务器的使用不当和浪费)

有人告诉我你实际上可以 POST 到一个页面然后重定向

在 Angular 服务中保存数据(我尝试通过在变量中保存一个数字,但它似乎不起作用。在另一个 SO 帖子上看到了这个)

编辑: 我刚刚看到了有关 AngularJS 工厂的一些信息,但它似乎不适用于动态数据,而且似乎我尝试过使用服务的东西但它不起作用。

这里还有服务测试的代码。还有调用 GetTest 和测试方法的控制器方法。

相互服务

var test = function (data) {
        test1 = data;
        console.log(data);
    };

Test: function (data) {
    return test(data);
},
GetTest: function () {
    return test1;
}

查看1

<button style="float: right; margin-bottom:20px;" class="btn btn-sm btn-primary" onclick="changeLocation()"> Change Location</button>
        <button style="float: right; margin-bottom:20px;" class="btn btn-sm btn-primary" ng-click="vm.Test(2)"> Purchase Order</button>


<script>
changeLocation = function () {
                window.location.href = '/Purchasing/Manage/CreateEditPurchaseOrder';
            }
</script>

【问题讨论】:

    标签: angularjs asp.net-mvc post


    【解决方案1】:

    因此,您可以在这里创建一个具有共享价值的 AngularJS 服务。将服务注入到每个视图的控制器或指令中。然后通过将服务变量分配给两个范围,您可以在两个地方拥有相同的变量。

    angular.module('myModule')
        .service('Test', [ 
           function () {
                var test = this;
    
                test.myValue = 'default';
    
                return test;
           }
        ]
    );
    
    angular.module('myModule')
        .directive('viewOne', [ 'Test' 
           function ( Test ) {
                return {
                     restrict: 'E',
                     templateUrl: 'my/path/to/viewOne',
                     scope: {},
                     link: function ( $scope ) {
                          $scope.myValue = Test.someValue;
                     }
                };
           }
        ]
    );
    
    angular.module('myModule')
            .directive('viewTwo', [ 'Test' 
               function ( Test ) {
                    return {
                         restrict: 'E',
                         templateUrl: 'my/path/to/viewTwo',
                         scope: {},
                         link: function ( $scope ) {
                              $scope.myValue = Test.someValue;
                         }
                    };
               }
            ]
        );
    

    【讨论】:

      【解决方案2】:

      您可以使用 Tempdata 将数据从一个视图传递到另一个视图。

      【讨论】:

      • 我会在哪里使用它?只是在索引的控制器中?像 TempData["items"] = items;然后在下一个控制器中,它的 items = TempData["items"] ?
      【解决方案3】:

      请检查以下答案。

      public ActionResult Index()
      {
        var model = new Review()
                  {
                      Body = "Start",
                      Rating=5
                  };
          TempData["ModelName"] = model;
          return RedirectToAction("About");
      }
      
      public ActionResult About() 
      {     
          var model= TempData["ModelName"];     
          return View(model); 
      } 
      

      也可以查看下面的链接

      http://www.squaredroot.com/2007/12/20/mvc-viewdata-vs-tempdata/

      【讨论】:

        猜你喜欢
        • 2021-11-09
        • 2015-10-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多