remove debugging code
[roojs1] / Roo / Template.js
index 597f93a..4f8e302 100644 (file)
 * For a list of available format functions, see {@link Roo.util.Format}.<br />
 * Usage:
 <pre><code>
-var t = new Roo.Template(
-    '&lt;div name="{id}"&gt;',
-        '&lt;span class="{cls}"&gt;{name:trim} {value:ellipsis(10)}&lt;/span&gt;',
-    '&lt;/div&gt;'
-);
+var t = new Roo.Template({
+    html :  '&lt;div name="{id}"&gt;' + 
+        '&lt;span class="{cls}"&gt;{name:trim} {someval:this.myformat}{value:ellipsis(10)}&lt;/span&gt;' +
+        '&lt;/div&gt;',
+    myformat: function (value, allValues) {
+        return 'XX' + value;
+    }
+});
 t.append('some-element', {id: 'myid', cls: 'myclass', name: 'foo', value: 'bar'});
 </code></pre>
-* For more information see this blog post with examples: <a href="http://www.jackslocum.com/yui/2006/10/06/domhelper-create-elements-using-dom-html-fragments-or-templates/">DomHelper - Create Elements using DOM, HTML fragments and Templates</a>. 
+* For more information see this blog post with examples:
+*  <a href="http://www.cnitblog.com/seeyeah/archive/2011/12/30/38728.html/">DomHelper
+     - Create Elements using DOM, HTML fragments and Templates</a>. 
 * @constructor
-* @param {String/Array} html The HTML fragment or an array of fragments to join("") or multiple arguments to join("")
+* @param {Object} cfg - Configuration object.
 */
-Roo.Template = function(html){
-    if(html instanceof Array){
-        html = html.join("");
+Roo.Template = function(cfg){
+    // BC!
+    if(cfg instanceof Array){
+        cfg = cfg.join("");
     }else if(arguments.length > 1){
-        html = Array.prototype.join.call(arguments, "");
+        cfg = Array.prototype.join.call(arguments, "");
+    }
+    
+    
+    if (typeof(cfg) == 'object') {
+        Roo.apply(this,cfg)
+    } else {
+        // bc
+        this.html = cfg;
+    }
+    if (this.url) {
+        this.load();
     }
-    /**@private*/
-    this.html = html;
     
 };
 Roo.Template.prototype = {
+    
+    /**
+     * @cfg {String} url  The Url to load the template from. beware if you are loading from a url, the data may not be ready if you use it instantly..
+     *                    it should be fixed so that template is observable...
+     */
+    url : false,
+    /**
+     * @cfg {String} html  The HTML fragment or an array of fragments to join("") or multiple arguments to join("")
+     */
+    html : '',
     /**
      * Returns an HTML fragment of this template with the specified values applied.
      * @param {Object} values The template values. Can be an array if your params are numeric (i.e. {0}) or an object (i.e. {foo: 'bar'})
      * @return {String} The HTML fragment
      */
     applyTemplate : function(values){
+        //Roo.log(["applyTemplate", values]);
         try {
-            
+           
             if(this.compiled){
                 return this.compiled(values);
             }
@@ -82,6 +108,36 @@ Roo.Template.prototype = {
          
     },
     
+    loading : false,
+      
+    load : function ()
+    {
+         
+        if (this.loading) {
+            return;
+        }
+        var _t = this;
+        
+        this.loading = true;
+        this.compiled = false;
+        
+        var cx = new Roo.data.Connection();
+        cx.request({
+            url : this.url,
+            method : 'GET',
+            success : function (response) {
+                _t.loading = false;
+                _t.html = response.responseText;
+                _t.url = false;
+                _t.compile();
+             },
+            failure : function(response) {
+                Roo.log("Template failed to load from " + _t.url);
+                _t.loading = false;
+            }
+        });
+    },
+
     /**
      * Sets the HTML used as the template and optionally compiles it.
      * @param {String} html