CanJS jQuery Template

Includes jQuery, CanJS and all of its plugins. Use it as a starting point when you want to demo something.

HTML

<script src="http://canjs.us/release/latest/can.jquery.js"></script>
<script src="http://canjs.us/release/latest/can.construct.proxy.js"></script>
<script src="http://canjs.us/release/latest/can.control.plugin.js"></script>
<script src="http://canjs.us/release/latest/can.view.modifiers.js"></script>
<script src="http://canjs.us/release/latest/can.construct.super.js"></script>
<script src="http://canjs.us/release/latest/can.object.js"></script>
<script src="http://canjs.us/release/latest/can.ejs.js"></script>
<script src="http://canjs.us/release/latest/can.map.attributes.js"></script>
<script src="http://canjs.us/release/latest/can.map.backup.js"></script>
<script src="http://canjs.us/release/latest/can.map.delegate.js"></script>
<script src="http://canjs.us/release/latest/can.map.setter.js"></script>
<script src="http://canjs.us/release/latest/can.map.validations.js"></script>
<script src="http://canjs.com/release/latest/can.fixture.js"></script>

JavaScript

var makeIssue = (function() {
    var id = 1;
    return function () {
        return {
            id: id++,
            title: "Isssue "+id,
            description: "Description of Issue "+id
        }}})()

function makeList(constructor) {
    var list = [];
    for (var i=0; i<10; i++) list.push(constructor());
    return list;
}

can.fixture({
    'GET Issues': function() {
        return makeList(makeIssue);
    },
    'GET Issue/{id}': function() {
        return makeIssue()
    },
    'GET Issue/{id}/Related': function() {
        return makeList(makeIssue);
    },
});

var Issue = can.Model.extend({
  findAll: 'GET Issues',
  findOne: 'GET Issues/{id}',

  findRelated: function(issue) {
    return can.ajax({
      type: 'GET',
      url: 'Issue/'+issue.id+'/Related'
    }).then(function(response) {
      return this.models(this.parseModels(response));
    }.bind(this));
  }

},{
  findRelated: function() {
    return this.constructor.findRelated(this);
  }
});

Issue.findRelated({id: 3}).then(function(issues) {
    console.log(issues);
});

new Issue({id: 3}).findRelated().then(function(issues) {
    console.log(issues);
});