Skip to content

okland/angular-meteor

 
 

Repository files navigation

Join the chat at https://gitter.im/Urigo/angular-meteor

The power of Meteor and the simplicity and eco-system of AngularJS

ng-conf

Quick start

Meteor Project

  1. Install Meteor $ curl https://install.meteor.com | /bin/sh
  2. Create a new meteor app using $ meteor create myapp or navigate to the root of your existing app
  3. Install urigo:angular $ meteor add urigo:angular

Meteor client side - with Bower

Use Meteor as a service in your existing non Meteor angular application

  1. Install meteor-client-side $ bower install meteor-client-side
  2. Install angular-meteor $ bower install angular-meteor

Resources

Contributing

We would love contributions in:

  1. Code
  2. Tutorial - our goal with the tutorial is to add as many common tasks as possible. If you want to create and add your own chapter we would be happy to help you writing and adding it.
  3. Roadmap - you can add a card about what you want to see in the library or in the tutorial.
  4. I (Urigo) live around the world with one small bag, so another way of contributing can be by offering me a place to sleep somewhere interesting around the world that I have to see :)

If you want to contribute and need help or don't know what should you do, you can contact me directly

Contributor Developer Setup

Run local urigo:angular in your project

Create your Meteor Project

meteor create myProject
cd myProject

Fork angular-meteor and clone the angular-meteor library to another directory named urigo:angular

mkdir urigo:angular
git clone https://github.com/[your_username]/angular-meteor.git urigo:angular

Create a packages directory under your project's root folder and link your forked repo

cd myProject
mkdir packages
cd packages
ln -s ~/path_to_your_repos/urigo\:angular

Now you can start using your own copy of the angular-meteor project from myProject.

Running tests

In the command line

. run_tests.sh

Then go to localhost:3000 in your browser

Usage

Table of Contents

App initialization

Register angular-meteor as a module in our application:

angular
  .module('myModule', ['angular-meteor']);

More in step 0 in the tutorial

Templating

You need to write your Angular template markup in .ng.html files, since Meteor won't look at those files as Spacebars templates. Tying HTML and .ng.html files together isn't very difficult, we can simply use Angular's ng-include.

Please note that the names of the templates to Angular will be their URL as Meteor sees it when minifying the '.ng.html' files. Hence every template URL is relative to the root of the Meteor project, and contains no leading forward slash. This is important to note when working with ng-include to include templates.

client/index.html:

<head>
    <title>Angular and Meteor</title>
</head>

<body ng-app="myModule">
    <ng-include src="'client/views/user.ng.html'"></ng-include>
    <ng-include src="'client/views/settings.ng.html'"></ng-include>
</body>

client/views/user.ng.html:

<div>
    <label>Name:</label>
    <input type="text" ng-model="yourName" placeholder="Enter a name here">

    <h1>Hello {{yourName}}!</h1>
</div>

More in step 0 of the tutorial

Binding to Meteor Collections

angular-meteor provides 3-way data binding (view-client-server) by tying a Meteor collection to an Angular model. The API to accomplish this is $meteor.collection.

$scope.todos = $meteor.collection(Todos);

More in step 3 of the tutorial

Subscribe

$meteor.subscribe is a wrapper for Meteor.subscribe that returns a promise.

Here's an example of how to tie a Meteor collection to a clean Angular model in the form of an array:

$meteor.subscribe('Todos').then(function () {
    $scope.todos = $meteor.collection(Todos);
});

More in step 9 of the tutorial

Routing

Use to official AngularUI ui-router Meteor package - angularui:angular-ui-router

More on how to actually use angular-ui-router in step 5 of the tutorial

<meteor-include>

You can include Meteor's native templates with the meteor-include directive.

<template name="todoList">
    A couple of todos
</template>

<meteor-include src='todoList'></meteor-include>

Read more on meteor-include, using parameters and binding Meteor templates to Angular's scope in the API docs.

User Authentication

angular-meteor provides complete support for the Meteor accounts system. more details here - Documentation.

More in step 8 of the tutorial

Meteor methods with promises

$meteor.call calls a Meteor method and returns a promise.

$meteor.call('addUser', username).then(function (data) {
    console.log('User added', data);
});

More in step 14 of the tutorial

Bind Meteor session

$meteor.session binds a scope variable to a Meteor Session variable.

$meteor.session('counter').bind($scope, 'counter');

Additional packages

The following is a non-exhaustive list of Meteor packages common Angular libraries:

Feel free to make more Angular packages and add them to that list as well.

Acknowledgement

This project started as ngMeteor, a pre-0.9 meteorite package. Since then a lot has changed but that was the main base.

Also, a lot of features were inspired by @superchris's angular-meteor fork of ngMeteor

About

Combining the simplicity and power of AngularJS and Meteor

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 85.5%
  • JavaScript 11.3%
  • CSS 2.3%
  • Other 0.9%