function TodoCtrl($scope) {
$scope.todos = [];
}
$(document).ready(function () {
$('#new-status form').submit(function (e) {
e.preventDefault();
var text = $('#new-status').find('textarea').val();
$.ajax({
url: '/echo/json/',
type: 'POST',
dataType: 'json',
data: {
text: text,
json: JSON.stringify({
'text': text
})
},
success: function (data) {
var $li = $('<li>');
var $input = $('<input>', {
'type': 'checkbox'
});
$li.append($input);
$li.append($('<label>', {
'text': data.text,
'data-text': data.text
}));
$input.change(function () {
$('h1 span').text($('#new-status input:not(:checked)').length);
var $label = $(this).parent().find('label');
$label.text($label.attr('data-text') + ($(this).is(":checked") ? " (Done!)" : ""));
}).trigger('change');
$('#statuses').append($li);
$('#new-status').find('textarea').val('');
}
});
});
});
<section ng-app>
<div id="new-status" ng-controller="TodoCtrl">
<h1>Todo (<span>0</span> left)</h1>
<form>
<textarea id="new-status"></textarea>
<button type="submit">Add</button>
</form>
<ul id="statuses">
<li ng-repeat="todo in todos">
<input type="checkbox" ng-model="todo.done">
<span class="done-{{todo.done}}">{{todo.text}}</span>
</li>
</ul>
</div>
</section>
External resources loaded into this fiddle: