【问题标题】:Thinkster MEAN Stack FactoryThinkster MEAN Stack 工厂
【发布时间】:2015-07-27 06:13:12
【问题描述】:

我正在阅读 Thinkster.io MEAN Stack 教程,并有一个关于为什么我的实现不起作用的问题。我知道这不是确切要求的内容,但想知道您将如何完成这项工作。我想用工厂来展示我从控制器搬进工厂的帖子。 app.js 的代码如下所示。

`

var app = angular.module('flapperNews', []);

app.factory('posts', [function(){
var o = {posts:[{title: 'post 1', upvotes: 5}, {title: 'post 2', upvotes: 2},  {title: 'post 3', upvotes: 15}, {title: 'post 4', upvotes: 9},{title: 'post 5', upvotes: 4}];
};
return o;
}]);

app.controller('MainCtrl', ['$scope', 'posts',function($scope, posts){
  $scope.test = 'Hello world!';
  $scope.posts = posts.posts; 
  $scope.addPost = function(){
    if(!$scope.title || $scope.title === ''){
     return; 
    }
    $scope.posts.push({title: $scope.title, link: $scope.link, upvotes: 0}); 
    $scope.title = '';
    $scope.link = '';
    };
  $scope.incrementUpvotes = function(post){
    post.upvotes += 1; 
  };

}]);

`

原来工厂中posts的对象在控制器中是$scope.posts。现在它在工厂中(被称为posts.posts)并且不显示。您将如何使数组显示在 html 中,因为我在具有 ng-repeat 的主控制器 div 下有 {{post.title}},它在引入工厂之前工作。

【问题讨论】:

  • 可能不是答案,但您应该只在工厂中保留 addPost 和 increment Upvotes 方法...
  • 问题是为什么我不能将我的帖子放在帖子工厂中,然后将它们引用为posts.posts
  • 你得到console.log($scope.posts)???
  • 您的 json 数据格式不正确。在数据结束之前,您有一个 ;。删除]之后的;
  • 感谢 ViChU!就是这样!因为我只是在学习角度,所以我不知道是否需要注入其他东西。我很高兴这只是一个小问题!

标签: angularjs factory mean.io


【解决方案1】:

您的 JSON 数据格式不正确。在数组 posts 之后,您的 JSON 数据中有一个分号。

使用它,它应该可以工作:

var o = {
    posts: [{
        title: 'post 1',
        upvotes: 5
    }, {
        title: 'post 2',
        upvotes: 2
    }, {
        title: 'post 3',
        upvotes: 15
    }, {
        title: 'post 4',
        upvotes: 9
    }, {
        title: 'post 5',
        upvotes: 4
    }]
};

【讨论】:

  • 太棒了!谢谢!我很高兴这只是一个小问题。这行得通!
  • 当然!玩得开心编码:)
猜你喜欢
  • 1970-01-01
  • 2015-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多