2017-07-24 75 views
0

我试图从cmsfn将变量传递给angularjs。有人设法做到了吗?将cmsfn值传递给作用域变量angularjs

<div ng-controller="someController"> 
     [#assign currentNode = cmsfn.asJCRNode(content)] 
     [#assign rootPageNode = cmsfn.root(currentNode, "mgnl:page")!] 
     <div style="display: none">{{myVar='${rootPageNode}'}}</div> 
    </div> 

在上面的代码中,当我尝试在角使用myVar,它的值是空的。

+0

要使此代码正常工作,需要通过渲染引擎。如果上面的代码片段位于'.ftl'文件中,它应该可以正常工作,但如果它直接位于属于资源一部分的'.js'文件中,则不会。你的文件位于何处,它是什么,资源或模板? – Jan

+0

它是一个模板和文件在页面文件夹,在其他来源内,我试图让页面的名称通过页面的名称访问页面的属性。如果你知道其他方式来做到这一点,随时可以说些什么 – pacheco

+0

然后,它应该像现在这样工作。顺便说一句,你可以跳过第一行。 'root()'方法接受'ContentMap'或'Node'作为参数。您的问题的一个可能的解释是,您传递的是已经是该网站根目录的页面(即,顶级页面不带任何父级),在这种情况下,方法将返回空值。 – Jan

回答

1

因此,首先降低你的FM代码一行:

[#assign rootPage = cmsfn.root(content, "mgnl:page")!] 

这样,你得到的回复是仍然ContentMap而不是Node这是比较容易的模板来操纵。

二,获得页面的名称(如果这是你想要的):

${[email protected]} 

您可以在this page

底部找到内容地图等特殊性能的名单现在,最后关于角度部分,您在模板中所拥有的仅仅是角度表达式,如果您愿意的话,“打印语句”将不会分配变量。您需要在someController控制器本身中使用$scope.myVar=...进行分配。这意味着.js文件本身需要成为freemarker模板。