2016-09-23 71 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/

相關問題