2013-03-21 63 views
2

我有一個使用Nustache的Windows應用程序。我可以使用Nustache迭代對象或數組,但是如何使用Nustache進行部分枚舉?如何在c#應用程序中使用帶有Nustache的Partial?

Check this link

檢查樣品11

var data = { depts: [ 
{ name: "Engineering", 
    employees: [ 
     {firstName: "Christophe", lastName: "Coenraets"}, 
     {firstName: "John", lastName: "Smith"}] 
}, 
{ name: "Sales", 
    employees: [ 
     {firstName: "Paula", lastName: "Taylor"}, 
     {firstName: "Lisa", lastName: "Jones"}] 
}]  }; 

var tpl = "{{#depts}}<h1>{{name}}</h1>" + 
      "<ul>{{#employees}}{{>employee}}{{/employees}}</ul>{{/depts}}"; 

var partials = {employee:"<li>{{firstName}} {{lastName}}</li>"}; 
var html = Mustache.to_html(tpl, data, partials); 
$('#sampleArea').html(html); 

如何實現在C#中的一樣嗎?

回答

1

修改tpl,如下所示!

var tpl = "{{employee}}<li>{{firstName}} {{lastName}}</li>{{/employee}}{{#depts}}<h1>{{name}}</h1>" + 
     "<ul>{{#employees}}{{>employee}}{{/employees}}</ul>{{/depts}}"; 

然後傳遞你的對象數組。它會正確取出。

1

我知道這是一個老問題,但我發現有一種方法可以做你正在問的東西。 Nustache允許使用<符號創建模板或部分內聯,因此{{> employee}}您的部分模板{{/ employee}}將會是您的偏好,然後當您想引用它時,只需使用>符號,例如:{{>員工}}

從readme.txt文件

64  {{<foo}}This is the foo template.{{/foo}} 
65  The above doesn't get rendered until it's included 
66  like this: 
67  {{>foo}} 

所以在nustache新代碼將是:

string tpl = "{{<employee}}<li>{{firstName}} {{lastName}}</li>{{/employee}}" + 
"{{#depts}}<h1>{{name}}</h1><ul>{{#employees}}{{>employee}}{{/employees}}</ul>{{/depts}}"; 

    string html = Nustache.Core.Render.StringToString(tpl, data); 

使用這種技術允許遞歸模板渲染中,以下將呈現並繼承部門和員工的團隊

{{<employee}}<li>{{firstname}} {{lastname}}{{>dept}}</li>{{/employee}} 
{{<dept}} 
    <ul>        
     <li > 
      <span >{{name}}</span>     
      {{#employees}}       
       {{>employee}} 
      {{/children}}   
     </li>      
    </ul> 
{{/dept}}{{>dept}} 
相關問題