如何在angularjs中的两个部分文件之间传递$ scope数据

时间:2014-05-30 09:48:37

标签: angularjs angularjs-directive angularjs-scope angularjs-routing angularjs-controller

如何使用angularJS在两个部分html文件中传递数据,完全不太可能无法通过它。

我有一个索引文件[罚款。],我登录并访问以DemoCtrl [Fine]编写的view5 [partials / blog.html],到目前为止一切正常。现在,当我点击blog.html中的链接时,它会转到下一页,但不会显示我在控制器中设置的任何$ scope数据。

部分文件的HTML代码:                                       {{post.postText}}                                       

    <div class="blog-meta clearfix">
     <p class="pull-left">
         <i class="icon-user"></i> by <a href="#">{{ post.firstName }} {{ post.lastName }}</a> | <i class="icon-folder-close"></i> Category <a href="#">Food</a> | <i class="icon-calendar"></i> {{post.createdDate.millis | date:'MM/dd/yyyy @ h:mma'}}
     </p>
     <p class="pull-right"><i class="icon-comment pull"></i> <a href="#/view18#comments" data-ng-click="postDetails(post)">3 Comments</a></p>
     </div>

*控制器代码*

    app.controller('DemoCtrl', ['$scope', 'Post', 'ezfb', '$window', 'PFactory', 'PostFactory', '$location', '$timeout', function ($scope, Post, ezfb, $window, PFactory, PostFactory, $location, $timeout) {
        $scope.postDetails = function (post) {
                $scope.postdetail = {id: null};
                $scope.postdetail = post;
                $location.path('/view18');
            }
    }]);    

* app.js *

    $routeProvider.when('/view5', {templateUrl: 'nova/blog.html', controller: 'DemoCtrl'});
    $routeProvider.when('/view18', {templateUrl: 'nova/blog-item.html', controller: 'DemoCtrl18'}); 
在带有post对象的DemoCtrl中调用的postDetails(post)方法,并且在$ scope.postDetail方法中的$ scope.postdetail变量中设置了post对象,并且视图是不同的模板。我可以在控制器和postDetails方法中看到控制台中的数据正常,但它不会显示在模板中。

1 个答案:

答案 0 :(得分:1)

您无法在另一个控制器/模板中的一个控制器中访问数据集范围。

使用服务并保留/设置服务中的数据,并使用DemoCtrl18中的服务获取您在DemoCtrl中设置的数据

或者使用angaular ui-router获得更多功能,如父子状态和范围继承等。