2014-10-16 20 views
1

的我想在console看到一些類型的輸出,如果一個模板沒有得到所有{{性質}}(調試)把手調試已丟失{{屬性}}模型

例如如果模板

<script type="text/x-handlebars" id="demo"> 
    <h1>{{name}}</h1> 
    <p>{{desc}}</p> 
</script> 

被稱爲與模型

{ 
    name:"Max", 
} 

應該有像console.warn

Template "demo" could not find property "desc" 

輸出是否有任何幫手,回調,......被稱爲每時間像{{property}}這樣的Handlebars表達式被調用?

回答

1

你可以用JavaScript來做任何你喜歡的事情。但要小心。 :)

有很多方式取決於你真正需要多少時間,你可以在黑客燼/車把/燼數據包花實現自己的目標。

第一和最簡單的變型中是重寫SimpleHandlebarsView/_HandlebarsBoundView,它顯示簡單綁定值render方法(有一些其他的觀點:對@eachwith等)。這是一個簡單的順序:覆蓋方法,調用舊方法,檢查獲取渲染值的結果,console.warn if result === undefined。您無法在該方法中獲取模板名稱,但您可以獲取呈現值的父視圖。所以,我建議打開LOG_VIEW_LOOKUPS以輕鬆地將視圖與模板進行匹配。

控制檯日誌的示例:

Rendering application with default view <(subclass of Ember.View):ember226> Object {fullName: "view:application"} 
Rendering index with default view <(subclass of Ember.View):ember251> Object {fullName: "view:index"} 
Rendering <(subclass of Ember.View):ember251> , property is undefined: model.undefined 

JSBin with example

另一種方法是從餘燼車把-EXT封裝覆蓋handlebarsGet方法:https://github.com/emberjs/ember.js/blob/v1.7.0/packages/ember-handlebars/lib/ext.js#L75。第三,如果您需要訪問未定義的屬性Ember.Objects,則可以覆蓋unknownProperty這些對象的方法。

如果您需要快速檢查渲染的數據,你可以在車把的模板中使用{{log model}}方法。

你可以更深入地打補丁,改寫當然灰燼的核心。但我建議不要過多依賴圖書館的內部結構。祝你好運!

+0

非常感謝,這似乎是一個合理的調試工作。我意識到{{debug}}和{{log model}}助手,但他們需要更改模板,我不會提供這些模板。再次感謝。 – SpazzMarticus 2014-10-17 05:23:19

0

不,他們使用Ember.get(context, propertyName)有被定義VS未定義回話說屬性沒有元數據。