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/>
  <div id="HelloWorld">
    <ui-input>
      <label>Name1:</label>
      <input name="name" autocomplete="off" placeholder="Enter a name here" />
    </ui-input>
    <ui-input>
      <label>Name2:</label>
      <input name="name" autocomplete="off" placeholder="Enter a name here" />
    </ui-input>
    <hr/>
    <h1>Hello <name></name>!?</h1>
    <textarea readonly></textarea>
  </div>
  <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>
 
.cloak, .hide {
  display: none;
}
a { display: block;}
a:after {content:" \bb";}
 
/* Mag.JS - Parent Child ui-input component example! */
var UserInputComponent = {
  //Runs once:
  controller: function(props) {
    //User input field
    this.input = {
      //Event to collect change
      _onInput: e => props.onChange(this.name)
    }
  }
}
var DataComponent = {
  controller: function() {
    var instances = mag.tag('ui-input', UserInputComponent, {
      onChange: (data) => {
        this.data = data;
      }
    })
    var states = {}
    var handler = (state, props, node) => {
      //combine two diff nodes into textarea
      states[node.id] = state.name;
      this.textarea = JSON.stringify(states)
    }
    instances.forEach(item => item.subscribe(handler))
  },
  view: function(state, props) {
    state.name = state.data || props.default;
  }
}
//Run application:
mag.module('HelloWorld', DataComponent, {
  default: 'friend'
})
Output 300px

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

Dismiss x
public
Bin info
anonymouspro
0viewers