Thinkster MEAN Stack Factory

Я просматривал руководство 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; 
  };

}]);

`

Первоначально объект сообщений в фабрике находился в контроллере как $scope.posts. Теперь он находится на заводе (обозначается как posts.posts) и не отображается. Как бы вы отобразили массив в html, поскольку у меня есть {{post.title}} под div основного контроллера с ng-repeat, который работает до введения фабрики.


person trebek1    schedule 27.07.2015    source источник
comment
Может быть, это не ответ, но вы должны оставить addPost и увеличить метод Upvotes только на заводе...   -  person binariedMe    schedule 27.07.2015
comment
вопрос в том, почему я не могу поместить свои сообщения в фабрику сообщений, а затем ссылаться на них как на сообщения.   -  person trebek1    schedule 27.07.2015
comment
вы получаете console.log($scope.posts)???   -  person binariedMe    schedule 27.07.2015
comment
Ваши данные json не отформатированы должным образом. У вас есть ; до окончания данных. Удалите ; после ]   -  person v1shnu    schedule 27.07.2015
comment
спасибо ВиЧУ! это было! Поскольку я только изучаю angular, я не знал, нужно ли мне вводить что-то еще. Я рад, что это была именно такая маленькая проблема!   -  person trebek1    schedule 27.07.2015
comment
Если вы откроете консоль разработчика со своим кодом, он укажет, что у вас есть app2.js:4 Uncaught SyntaxError: Unexpected token ; - и дайте номер строки. В следующий раз...   -  person rtfminc    schedule 20.04.2016


Ответы (1)


Ваши данные JSON имеют неправильный формат. Внутри ваших данных JSON после массива posts есть точка с запятой.

Используйте это, и это должно работать:

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
    }]
};
person v1shnu    schedule 27.07.2015
comment
Потрясающий! Спасибо! Я рад, что это была лишь небольшая проблема. Это работает! - person trebek1; 27.07.2015
comment
Конечно ! Получайте удовольствие от кодирования :) - person v1shnu; 27.07.2015