首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >AngularJS -在页面之间传递数据

AngularJS -在页面之间传递数据
EN

Stack Overflow用户
提问于 2014-03-14 23:08:24
回答 4查看 158.1K关注 0票数 67

我是一个AngularJS初学者。我正在尝试从以下位置发送数据:

  • 页面A: Van列表页面

  • 页B: Van更新页。

当用户单击货车的更新链接时,我正在调用控制器并检索控制器中的货车详细信息。但是,我不能使用相同的控制器将面包车详细信息分配到页面B(面包车更新页面)...错误"Cannot set property 'vanNumber' of undefined"

代码语言:javascript
复制
*** Page A: Van List ****

<form name="listVanForm" >
   <table>
   <tr> <td ng-controller="VanUpdateCtrl"><a href="#/van-update" ng-click="prePopulateForm(row.members.vanNumber.value )" class="btn btn-small btn-primary">update</a></td> </tr>
   </table>
</form>

*** Page B: Van Update ****

  <div class="container">
        <h2>Edit Van </h2>
    
        <form name="updateVanForm" novalidate="novalidate" class="form-horizontal" ng-submit="updateCard(formData)">
            <div class="control-group">
                <label class="control-label" >Van Number:</label>
    
                <div class="controls">
                    <input type="text" id="vanNumber" ng-model="formData.vanNumber" placeholder=""/>
                </div>
            </div>
        </form>
     </div>

*** VanUpdateCtrl **

   app.controller('VanUpdateCtrl', ['$scope', 'VanUpdateFactory', '$location',
                                      function ($scope, VanUpdateFactory, $location) {
    
        //callback for ng-init 'populateDD':    
        $scope.prePopulateForm = function (cardNoParam m) {
            
            alert('cardNo = '+cardNoParam);
            
            $scope.formData.cardNumber=cardNoParam;}
    }
    
So, $scope.formData.cardNumber OR $scope.formData in the destination page is not recognised.
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-14 23:32:54

您需要创建一个能够在控制器之间共享数据的服务。

代码语言:javascript
复制
app.factory('myService', function() {
 var savedData = {}
 function set(data) {
   savedData = data;
 }
 function get() {
  return savedData;
 }

 return {
  set: set,
  get: get
 }

});

在控制器A中:

代码语言:javascript
复制
myService.set(yourSharedData);

在您的控制器B中:

代码语言:javascript
复制
$scope.desiredLocation = myService.get();

请记住通过将myService作为参数传递来将其注入控制器。

票数 125
EN

Stack Overflow用户

发布于 2014-03-14 23:30:17

您应该做的是创建一个服务来在控制器之间共享数据。

不错的教程https://www.youtube.com/watch?v=HXpHV5gWgyk

票数 8
EN

Stack Overflow用户

发布于 2015-01-21 08:56:48

如果您只需要在视图/作用域/控制器之间共享数据,最简单的方法是将其存储在$rootScope中。但是,如果您需要一个共享函数,最好是定义一个服务来执行此操作。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22408790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档