Meteor + AngularJs的例子

时间:2013-03-31 07:54:15

标签: angularjs meteor angular-meteor

我是Meteor和AngularJs的新手。我正在尝试关注https://github.com/lvbreda/Meteor_angularjs上的示例应用,但到目前为止我无法使其正常运行。

我在这段代码中收到错误'app is not defined':

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'

https://github.com/bevanhunt/meteor-angular-leaderboard处米+角度的唯一另一个例子似乎已过时。

有人可以使用https://github.com/lvbreda/Meteor_angularjs的包发布一个简单但完全可以下载的meteor + angularjs示例吗?

8 个答案:

答案 0 :(得分:7)

我显然有偏见,但我们的团队编写并维护了这个库 - angular-meteor,我们还发布了一个将两者结合起来的教程 - angular-meteor tutorial

答案 1 :(得分:5)

虽然我没有使用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's 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's 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']
)

有关完整的工作示例,请参阅this example project of mine。感谢您的反馈。

答案 2 :(得分:4)

我刚刚创建了一个简单的例子,展示了如何创建一个简单的角度流星应用程序。

该应用程序显示mongo集合中的一些项目,并可以通过浏览器控制台实时更新集合。 (只是带有angular-js的默认流星特征)

可以在github上找到:https://github.com/tom-muhm/angular-meteor-example

答案 3 :(得分:2)

您可以在不同的分支中找到一些示例 https://github.com/alex-okrushko/Meteor_angularjs

我在https://github.com/linepos/linepos中构建了一个应用,但现在它无效,因为lvbreda更改了代码

您可以使用https://github.com/kievechua/flame-on

的不同方法

答案 4 :(得分:2)

刚遇到同样的问题。通过添加meteor依赖

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

答案 5 :(得分:2)

我也是Meteor和Angular的新手 - 我也很难做到这一点。但我认为我设法运行基本的Angular功能。

我发现了github:https://github.com/dirkk0/angularjs-meets-meteorjs

我希望这也适合你。

答案 6 :(得分:1)

我自己一直在解决这个问题并制作了一个角度包。 示例代码位于:https://github.com/bramtervoort/meteor-angular-stack/tree/example 例如:http://bramtervoort-todo.meteor.com

非常简单,只需安装流星并运行:mrt add angular-stack

答案 7 :(得分:-1)

我的回答很简单:不要混合流星和棱角分明!

你为什么要这样? 对于数据绑定功能? Meteor为你做的比使用帮助器和发布/订阅机制更加简单。

建立自己的指令?流星模板和Blaze也为你做这件事。

在使用角度很长一段时间之后,我最近使用了流星并且发现它变得如此简单:更少的代码来实现相同的,更清晰的指令声明,在后台为你做了很多,特别是用于提取数据子集。

没有必要使用角度与流星,只需使用流星。我还没有找到一个我需要角度的情况。

meteor中最难理解的概念是发布订阅模型,但是一旦获得它,它就非常强大,因为您可以定义使用参数将哪些数据推送到客户端。然后你需要的只是一个模板来渲染它。

查看这篇文章了解更多详情 https://www.discovermeteor.com/blog/understanding-meteor-publications-and-subscriptions/

编辑:2016年1月

观看Meteor中Angular 2的基准测试,我现在可以看到使用它的原因。对于以前的版本,情况绝对不是这样的:

参见文章: http://info.meteor.com/blog/comparing-performance-of-blaze-react-angular-meteor-and-angular-2-with-meteor

Angular 1.x比6个月前的Blaze和React慢得多。 Angular 2似乎更好,但我仍然不是过度复杂的粉丝。

为了简单和速度,还要查找由前Angular主导构建的Aurelia.io,并设计为使用Javascript框架本身进行操作。