Javascript 灰尘-如何在循环中获取父上下文
我试图从父上下文检索循环中的值。Dust可以调用我的方法,但我的方法无法访问我在类中定义的属性,因为上下文是当前项 例如:Javascript 灰尘-如何在循环中获取父上下文,javascript,dust.js,Javascript,Dust.js,我试图从父上下文检索循环中的值。Dust可以调用我的方法,但我的方法无法访问我在类中定义的属性,因为上下文是当前项 例如: JavaScript类 MyNamespace.MyClass = function () { this.names= ["Me", "You", "StackOverflow"]; this.isAwesome = true; }; MyNamespace.MyClass.prototype.sayHello = function() { if(thi
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
方法将按预期调用,但是上下文是当前项而不是父项。因此,此
等于当前项,当然也等于“Me”。isAwesome
将始终返回false。正如你所理解的,我想做一个很棒的人
问题我如何才能实现dust返回3个很棒的人。当您使用dust调用函数时,该函数将使用参数
chunk、context、body、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
}
使用Dust调用函数时,将使用参数chunk、context、body、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
}
您可以将所需的上下文变量作为参数传递:
{#names myvar=parentContextVariable}{sayHello x=myvar} {.}{~n}{/names}
然后,在helper函数中:
"sayHello": function(chunk, context, bodies, params) {
//use params.x
}
是的,在这里,您的函数还需要额外考虑(DustJs的存在)。您可以将所需的上下文变量作为参数传递:
{#names myvar=parentContextVariable}{sayHello x=myvar} {.}{~n}{/names}
然后,在helper函数中:
"sayHello": function(chunk, context, bodies, params) {
//use params.x
}
是的,在这里,您的函数还需要额外关注(DustJs的存在)。Hmm。。它可以工作,但这意味着我的模型必须知道灰尘用于渲染。所以我的“sayHello”方法有一个额外的问题。。这意味着如果我采用这种方法,我会被链接到DUST。这主要是因为DUST的上下文范围模型与vanilla Javascript不同,因为您可以有多个层次的范围,并且它们是自下而上搜索的。嗯。。它可以工作,但这意味着我的模型必须知道灰尘用于渲染。所以我的“sayHello”方法有一个额外的问题。。这意味着如果我采用这种方法,我会被链接到DUST。这主要是因为DUST的上下文范围模型与vanilla Javascript不同,因为您可以有多个层次的范围,并且它们是自下而上搜索的。