如果模板没有获得所有{{properties}}(用于调试),我想在console
中看到某种输出
e.g。如果是模板
<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}}等句柄表达式时都会调用它?
答案 0 :(得分:1)
你可以用javascript做任何你喜欢的事。但要小心。 :)
有很多方法可以实现您的目标,具体取决于您真正需要的是什么,以及您可以花多少时间用于黑客余烬/把手/余烬数据包。
第一个也是最简单的变体是覆盖SimpleHandlebarsView / _HandlebarsBoundView的render
方法,它显示简单的绑定值(其他几个视图很少:@each
,with
等)。这是一个简单的序列:覆盖方法,调用旧方法,检查获取渲染值的结果,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
另一种方法是从ember-handlebars-ext包中覆盖handlebarsGet方法:https://github.com/emberjs/ember.js/blob/v1.7.0/packages/ember-handlebars/lib/ext.js#L75。
第三,如果您需要捕获对Ember.Objects
的未定义属性的访问权限,则可以覆盖这些对象的unknownProperty方法。
如果您需要快速检查渲染数据,可以在Handlebar模板中使用{{log model}}
方法。
当然,你可以更深入地修补和重写Ember的核心。但我建议不要太依赖图书馆的内部结构。祝你好运!
答案 1 :(得分:0)
不,他们使用Ember.get(context, propertyName)
没有返回元数据,说明属性是未定义的。