Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sungwoncho/iron-utils
Convenient client side utilities for Iron Router
https://github.com/sungwoncho/iron-utils
Last synced: 3 months ago
JSON representation
Convenient client side utilities for Iron Router
- Host: GitHub
- URL: https://github.com/sungwoncho/iron-utils
- Owner: sungwoncho
- License: mit
- Created: 2015-07-24T01:14:38.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2016-01-23T04:43:21.000Z (almost 9 years ago)
- Last Synced: 2024-10-09T09:44:52.306Z (3 months ago)
- Language: JavaScript
- Homepage: https://atmospherejs.com/sungwoncho/iron-utils
- Size: 12.7 KB
- Stars: 10
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Iron-utils
[![Build Status](https://travis-ci.org/sungwoncho/iron-utils.svg?branch=master)](https://travis-ci.org/sungwoncho/iron-utils)[![Meteor Icon](http://icon.meteor.com/package/sungwoncho:iron-utils)](https://atmospherejs.com/sungwoncho/iron-utils)
Iron-utils provides convenient client side utilities for Iron Router.
## Get Started
Install the package:
meteor add sungwoncho:iron-utils
## Utilities
You can use the following utilities anywhere on the client side.
### CurrentRoute
`CurrentRoute` object includes helper methods related to current routes.
* `CurrentRoute.name`
This returns the name of the current route.
```javascript
Router.route('apple', {
name: 'apple'
});Router.go('apple');
CurrentRoute.name
// => 'apple'
```* `CurrentRoute.is(routeName)`
This checks if the current route's name is equal to the name passed as the argument.
```javascript
Router.route('apple', {
name: 'apple'
});Router.go('apple');
CurrentRoute.is('apple');
// => true
CurrentRoute.is('banana');
// => false
```* `CurrentRoute.params`
This returns an array of parameters passed to the current route. The array also
has key-value pairs of parameter names and values.This means that you can easily retrieve parameters by their names.
```javascript
Router.route('fruit/:type/:color', {
name: 'fruit'
});Router.go('fruit', {type: 'banana', color: 'blue'});
CurrentRoute.params
// => ['banana', 'blue']
CurrentRoute.params.type
// => 'banana'
CurrentRoute.params.color
// => 'blue'
```* `CurrentRoute.hash`
Returns a value of the hash parameter passed to the current route.
```javascript
// On a route '/apple#L1'CurrentRoute.hash
// => 'L1'
```* `CurrentRoute.query`
Returns an object of query parameters passed to the current route.
```javascript
// On a route '/apple?sort=popularity&limit=10'CurrentRoute.query
// => {sort: "popularity", limit: "10"}
```## Use case
The following is an example use case where iron-utils can help you write less code
with a clearer meaning.```javascript
// -----------------------------------------------------------------
// Before
// -----------------------------------------------------------------
Template.myTemplate.onCreated(function () {
var self = thisself.autorun(function () {
var currentRoute = Router.current();if (currentRoute.route.getName() === 'category.show') {
self.subscribe('topics', currentRoute.params.slug, self.limit.get());
} else {
self.subscribe('recent-topics', self.limit.get());
}
});
});// -----------------------------------------------------------------
// After
// -----------------------------------------------------------------
Template.myTemplate.onCreated(function () {
var self = thisself.autorun(function () {
if (CurrentRoute.is('category.show')) {
self.subscribe('topics', CurrentRoute.params.slug, self.limit.get());
} else {
self.subscribe('recent-topics', self.limit.get());
}
});
});
```## Contributing
If you found a bug or have a feature request, open an issue.
To run tests locally, run `meteor test-packages`.