Пример Meteor + AngularJs

Я новичок в Meteor и AngularJs. Я пытаюсь последовать примеру приложения на https://github.com/lvbreda/Meteor_angularjs, но я пока не смог его запустить.

Я получаю сообщение об ошибке "приложение не определено" в этом фрагменте кода:

app.controller('MeteorCtrl', ['$scope', '$meteor', function ($scope, $meteor) {
Uncaught ReferenceError: app is not defined
    $scope.todos = $meteor("todos").find({});
    $meteor("todos").insert({
        name: "Do something",
        done: false
    });

Я попытался переписать выше:

var MeteorCtrl = function ($scope, $meteor) {
    $scope.todos = $meteor("todos").find({});
    $meteor("todos").insert({
        name: "Do something",
        done: false
    })
};

который все еще выдает ошибку 'Ошибка: Неизвестный поставщик: $meteorProvider < - $meteor'

Единственный другой пример счетчика + angularjs в https://github.com/bevanhunt/meteor-angular-leaderboard, по-видимому, устарел.

Может ли кто-нибудь отправить простой, но полностью рабочий, загружаемый пример meteor + angularjs, используя пакет https://github.com/lvbreda/Meteor_angularjs?

Ответ 1

Я явно предвзятый, но наша команда написала и поддерживает эту библиотеку - angular-meteor, и мы также выпустили учебник для объединения два - angular -меторальный учебник

Ответ 2

Пока я не использую пакет lvbreda Angular, мне удалось интегрировать Angular с Meteor + Blade в качестве языка шаблонов HTML относительно простым способом. Я начал работу с пакетом Daniel Olano Ng-Meteor и закончил свою собственную реализацию моста Meteor/ Angular. Я новичок в Meteor и Angular, но, похоже, он работает хорошо, и мне нравится, что код очень прозрачный, так что я хорошо понимаю, как он работает.

Я написал следующий модуль CoffeeScript с именем client/ngMeteor.coffee, который определяет мост между Meteor и Angular:

define("ngMeteor", [], ->
  angular.module('ngMeteor.directives', [])

  angular.module('ngMeteor.services', [])

  angular.module('ngMeteor.blade', []).run(['$templateCache', '$rootScope', '$compile',
    ($templateCache, $rootScope, $compile) ->
      bodyTemplate = Template.body
      if !bodyTemplate
        throw new Error("A body template must be defined ('body.blade')")

      # Render each template and place in Angular template cache
      $templateCache.put "#{key}.blade", render() for own key, render of Template

      # Render the body template and have Angular compile it, then inject it into the DOM body element
      Meteor.startup(()->
        # Necessary?
        Spark.finalize(document.body)
        $('html').attr('data-ng-app', '')
        $('body').html($compile(bodyTemplate())($rootScope))
        $rootScope.$apply()
      )
  ])
  angular.module 'ngMeteor', ['ngMeteor.blade', 'ngMeteor.services', 'ngMeteor.directives']
)

Для полного рабочего примера см. этот пример моего проекта. Обратная связь приветствуется.

Ответ 3

Я просто создал простой пример, который показывает, как создать простое приложение angular -meteor.

Приложение отображает некоторые элементы из коллекции mongo и может обновлять коллекцию через браузер-консоль в режиме реального времени. (только параметры метеода по умолчанию с angular -js)

Его можно найти на github: https://github.com/tom-muhm/angular-meteor-example.

Ответ 5

Просто такая же проблема. Решено, добавив meteor зависимость

angular.module('meteorapp', ["meteor"]) # <------------------- Here
.config ['$routeProvider', '$locationProvider', ($routeProvider, $locationProvider) ->
  $locationProvider.html5Mode(true)
  $routeProvider.when '/',
   controller: 'home'
]

Ответ 6

Я также новичок в Meteor и Angular, и мне тоже было трудно сделать эту работу. Но я думаю, что мне удалось запустить базовую функциональность Angular.

Что я узнал, я положил на github: https://github.com/dirkk0/angularjs-meets-meteorjs

Я надеюсь, что это тоже сработает для вас.

Ответ 8

Мой ответ будет простым: не смешивайте метеор и angular!

Почему ты должен? Для возможностей привязки данных? Meteor делает это для вас намного проще, чем angular с помощниками и механизмом публикации/подписания.

Чтобы создать свои собственные директивы? Шаблоны Meteor и Blaze делают это для вас тоже.

После долгого использования angular я недавно использовал метеорит и считаю его намного проще: гораздо меньше кода для достижения того же самого более чистого объявления директив, для вас в фоновом режиме, особенно для вытягивания подмножеств данных.

Нет необходимости использовать angular с метеором, просто используйте метеорит. Я еще не нашел случай, когда мне понадобился angular.

Самое сложное понятие для метеорности - это модель публикации подписки, но как только вы ее получите, она очень эффективна, так как вы можете определить, какие данные будут переданы клиенту с параметрами. Тогда все, что вам нужно, это шаблон для его рендеринга.

Поиск этой статьи для получения дополнительной информации https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/

EDIT: январь 2016

Взглянув на тесты angular 2 в Метеор, я теперь вижу причину, возможно, использовать его. Это было не так с предыдущими версиями:

См. статью: http://info.meteor.com/blog/comparing-performance-of-blaze-react-angular-meteor-and-angular-2-with-meteor

Angular 1.x был более медленным, чем Blaze и React, всего 6 месяцев назад. angular 2 кажется лучше, но я все еще не поклонник чрезмерной сложности.

Для простоты и скорости также найдите Aurelia.io, созданный бывшим руководством angular, и рассчитанный на продолжение и перемещение с помощью фреймворка Javascript сам по себе.