我正在尝试从父上下文中循环检索值。 Dust能够调用我的方法,但我的方法无法访问我在类中定义的属性,因为上下文是当前项。
所以例如:
JavaScript类
MyNamespace.MyClass = function () {
this.names= ["Me", "You", "StackOverflow"];
this.isAwesome = true;
};
MyNamespace.MyClass.prototype.sayHello = function() {
if(this.isAwesome) {
return "Hello awesome ";
// This code will never be reached due to 'this' is one of the items from the array
}
return "Hello ";
};
我的尘埃
{#names}{sayHello} {.}{~n}{/names}
问题
sayHello
方法将按预期调用,但上下文是当前项而不是父项。因此this
等于当前项目,当然"Me".isAwesome
将始终返回false。正如你所理解的那样,我想要很棒。
问题
我怎样才能实现那3个令人敬畏的人被灰尘归还。
答案 0 :(得分:3)
您可以将所需的上下文变量作为参数传递:
{#names myvar=parentContextVariable}{sayHello x=myvar} {.}{~n}{/names}
然后,在辅助函数中:
"sayHello": function(chunk, context, bodies, params) {
//use params.x
}
是的,在这里,你的功能将有额外的关注(DustJs的存在)。
答案 1 :(得分:1)
使用Dust调用函数时,将使用参数chunk, context, bodies, params
调用该函数。
您可以调用context.get(name)
在上下文堆栈中搜索所需的变量。
{
"sayHello": function(chunk, context, bodies, params) {
if(context.get("isAwesome")) {
return "Hello awesome";
}
return "Hello";
},
"names": ["One", "Two", "Three"],
"isAwesome": true
}