AngularJS:无法从工厂访问对象属性

时间:2015-04-04 05:08:43

标签: angularjs angularjs-scope

我的AngularJS初学者问题非常简单:我试图将数据从工厂传递到控制器并打印返回到我视图的对象,这里是我的代码:

angular.module('app').factory('blogFactory',function(){
   return {
        //EDIT
        post:{"author":"Bob","name":"smith","content":"some content"},
        read: function(){
            return this.post; 
        }
   }
});

在控制器中:

angular.module('app').controller('MainCtrl',['$scope','blogFactory'], function($scope, blogFactory){
   $scope.datas = blogFactory.read();
   console.log($scope.datas);});

当我console.log($scope.datas时,它会将对象记录正确。在视图中,我无法访问对象的属性:

<section class="overview">
     <article ng-repeat="data in datas">
         <p>{{data.name}}</p> //Doesn't display anything
         <p>{{data}}</p>     // Displays the object
     </article>
 </section>

有没有人有任何想法?提前致谢

2 个答案:

答案 0 :(得分:1)

name

中没有任何名为$scope.datas的媒体资源
{"author":"Bob","content":"some content"}

您必须打印datas.author

这就是<p>{{data.name}}</p>不显示任何数据的原因。

根据您的工厂代码,post是一个对象。但在您看来,您正在使用

 <article ng-repeat="data in datas">

这不是必需的。只需datas即可获得个人帖子

答案 1 :(得分:0)

这段代码工作正常我已经测试过了:

var app = angular.module('app',[])
app.factory('blogFactory',function(){
return {
    post:{"author":"Bob","content":"some content"},
    read: function(){
        return this.post; 
    }
}
});

app.controller('MainCtrl', function($scope,blogFactory){
  alert();
$scope.datas = blogFactory.read();
console.log($scope.datas);
})

对于视图:

<body ng-controller ="MainCtrl">
<section class="overview">
 <article ng-repeat="data in datas" >
     <p>{{data.name}}</p> 
     <p>{{data}}</p>    
 </article>
</section>
</body>