2016-09-23 40 views
0

我需要在视图之间传递数据。我有一个视野,你检查项目,然后再看看你可以检查的项目。问题是,当您重定向到另一个页面时,您将丢失所有数据,因此我丢失了所选项目上的所有数据。如何使用Angular将数据从一个视图传递到另一个视图

可能的解决方案?:

呼叫至DB保存所有物品,然后就删除完成后(好像不当和浪费服务器)

有人告诉我,你其实可以张贴到网页然后重定向

在角服务保存数据

EDIT(我想这仅通过保存在一个变量数目,但它似乎并不像它的工作看到了这对其他SO帖子。): 我刚刚看到了一些有关AngularJS工厂的内容,但它似乎并不适用于动态数据。看起来好像我尝试过使用该服务,但它不起作用。

此处还有服务测试代码。 Theres也只是调用GetTest和测试方法的控制器方法。

MutualService

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> 

回答

0

检查,因此你可以在这里做的是分享的价值创造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; 
        } 
       }; 
      } 
     ] 
    ); 
0

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

+0

我会在哪里使用它?只是在索引的控制器?像TempData [“items”] =项目;然后在下一个控制器中它的items = TempData [“items”]? – user4648142

0

请检查以下答案。

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/

相关问题