Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 灰尘-如何在循环中获取父上下文_Javascript_Dust.js - Fatal编程技术网

Javascript 灰尘-如何在循环中获取父上下文

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

我试图从父上下文检索循环中的值。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
方法将按预期调用,但是上下文是当前项而不是父项。因此,
等于当前项,当然也等于
“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不同,因为您可以有多个层次的范围,并且它们是自下而上搜索的。