Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <link href="//cdn.jsdelivr.net/picnicss/4.1.1/picnic.min.css" rel="stylesheet">
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <h1>Hello Mag.JS!</h1>
  <a target="_top" href="https://github.com/magnumjs/mag.js">GitHub</a>
  <hr/>
  <!-- instances -->
  <div id="app">
    <content></content>
    <button>SWITCH!</button>
  </div>
  <div class="hide">
    <div id="inner">
      <h3>World! </h3>a
      <count></count>
    </div>
    <div id="other">
      <h3>Otherly! </h3>b
      <count></count>
    </div>
  </div>
  <!-- instances -->
  <hr/>
  <script src="//rawgit.com/magnumjs/mag.js/master/mag-latest.min.js"></script>
  <script src="//rawgit.com/magnumjs/mag.js/master/dist/mag.addons.0.22.min.js"></script>
</body>
</html>
 
.hide {
  display: none;
}
a {
  display: block;
}
a:after {
  content: " \bb";
}
 
/* MagJS - example - reusable clone components with shared or unique state */
var module = {
  view: function(state, props) {
    state.content = window[props.current]({
      service: props.service
    });
    state.button = {
      _onClick: function() {
        props.current = props.current == 'other' ? 'inner' : 'other';
      }
    };
  }
};
var innermodule = {
  view: function(state, props2) {
    state.h3 = {
      _text: 'YOLO!' + props2.stuff + props2.other,
      _onclick: function() {
        state.count = state.count + 1 || 1;
      }
    };
  }
};
var inner = mag.create('inner', innermodule, {
  other: 'extra',
  stuff: 10
});
var other = mag.create('other', innermodule, {
  other: 'extra',
  stuff: 10
});
var obj = function(asda) {
  return asda;
};
mag.module('app', module, {
  inner: inner,
  other: other,
  current: 'inner',
  service: {
    test: obj
  },
  test: 10
});
Output 300px

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
anonymouspro
0viewers