totaljs / Tangular

A simple JavaScript template engine like Angular.js for websites or node.js
MIT License
61 stars 21 forks source link

Adding entry and refresh template #2

Closed hasan3ysf closed 9 years ago

hasan3ysf commented 9 years ago

Hi Peter,

The below code run corrctly with me, I'm doing it in the cirrect way, is there a simplet way. thanks

<!DOCTYPE html>
<meta name="robots" content="noindex">
<html>
<head>
  <meta charset="utf-8">
  <title>Multi lines entry</title>
<script src="tangular.js"></script>
</head>
<body>

<div id='output'></div>

<input type="text" id="newOrderNum"/>
<input type="text" id="newOrderName"/>
<button id="AddOrderBtn">Add user</button>

<script id="template" type="text/html">
{{foreach m in orders}}
    <h2>Order num.{{m.number}} (current index: {{$index}})</h2>
    <div>{{m.name}}</div>
{{end}}
</script>

<script>
Tangular.register('plus', function() {});

var model = { name: 'total.js', age: 2, orders: [{ number: 1001, name: 'iPhone' }, { number: 1002, name: 'Samsung' }]};
var source = Tangular.compile(document.getElementById('template').innerHTML);

document.querySelector('#output').innerHTML = source(model);

document.querySelector('#AddOrderBtn').addEventListener("click", function(){

    var newON = document.querySelector('#newOrderNum').value;
    var newNM = document.querySelector('#newOrderName').value;

    model.orders.push({"number": newON, "name": newNM});

    document.querySelector('#newOrderNum').value="";
    document.querySelector('#newOrderName').value="";

    document.querySelector('#output').innerHTML = source(model);
});

</script>
</body>
</html>
petersirka commented 9 years ago

I use jQuery and jComponent (a component library for jQuery, but I don't have any example yet).

I see one problem:

Tangular.register('plus', function() {
    return 'MUST RETURN A NEW VALUE';
});