标签: transclusion

什么是ng-transclude?

我在StackOverflow上看到了很多关于ng-transclude的问题,但是没有人用外行的术语解释它是什么.

文档中的描述如下:

指示使用包含转义的最近父指令的转换DOM的插入点的指令.

这相当令人困惑.有人能够简单地解释一下ng-transclude的目的是什么以及它可能在哪里使用?

angularjs transclusion angularjs-directive

257
推荐指数
2
解决办法
8万
查看次数

如何在另一个文件中包含YAML文件?

所以我有两个YAML文件,"A"和"B",我想要将A的内容插入到B中,或者拼接到现有的数据结构中,像数组一样,或者作为元素的子元素,比如值对于某个哈希键.

这有可能吗?怎么样?如果没有,任何指向规范参考的指针?

yaml transclusion

255
推荐指数
8
解决办法
15万
查看次数

React.js:将一个组件包装到另一个组件中

许多模板语言都有"slots"或"yield"语句,允许进行某种控制反转,将一个模板包装在另一个模板中.

Angular有"transclude"选项.

Rails有收益率声明.如果React.js有yield语句,它将如下所示:

var Wrapper = React.createClass({
  render: function() {
    return (
      <div className="wrapper">
        before
          <yield/>
        after
      </div>
    );
  }
});

var Main = React.createClass({
  render: function() {
    return (
      <Wrapper><h1>content</h1></Wrapper>
    );
  }
});
Run Code Online (Sandbox Code Playgroud)

期望的输出:

<div class="wrapper">
  before
    <h1>content</h1>
  after
</div>
Run Code Online (Sandbox Code Playgroud)

唉,React.js没有<yield/>.如何定义Wrapper组件以实现相同的输出?

javascript template-engine composition transclusion reactjs

169
推荐指数
3
解决办法
14万
查看次数

如何从同一个YAML文件中的其他地方引用YAML"设置"?

我有以下YAML:

paths:
  patha: /path/to/root/a
  pathb: /path/to/root/b
  pathc: /path/to/root/c
Run Code Online (Sandbox Code Playgroud)

如何通过/path/to/root/从三个路径中删除并将其作为自己的设置来"规范化" ,例如:

paths:
  root: /path/to/root/
  patha: *root* + a
  pathb: *root* + b
  pathc: *root* + c
Run Code Online (Sandbox Code Playgroud)

显然这是无效的,我只是弥补了.什么是真正的语法?可以吗?

syntax yaml transclusion

118
推荐指数
6
解决办法
8万
查看次数

在渲染之前检查模板是否存在

有没有办法在调用渲染之前检查twig模板是否存在?try catch块似乎不起作用,至少在开发环境中,而且,我更喜欢检查而不是异常的成本.

这个类TwigEngine有一个exists()方法,但没有找到使用的例子.

symfony twig transclusion

36
推荐指数
4
解决办法
2万
查看次数

在angular指令中获取原始的transcluded内容

我的目标是创建一个editable指令,允许用户编辑属性所附加的任何元素的HTML(参见Plunker:http://plnkr.co/edit/nIrr9Lu0PZN2PdnhQOC6 )

除了我无法获得翻译内容的原始原始HTML以初始化文本区域之外,这几乎可以正常工作.我可以得到它从文clone.text(),但缺少像HTML标签<H1>,<div>等等,以便点击没有编辑不幂等应用.

该方法clone.html()抛出错误,Cannot read property 'childNodes' of undefined

app.directive("editable", function($rootScope) {
  return {
    restrict: "A",
    templateUrl: "mytemplate.html",
    transclude: true,
    scope: {
      content: "=editContent"
    },

    controller: function($scope, $element, $compile, $transclude, $sce) {

      // Initialize the text area with the original transcluded HTML...
      $transclude(function(clone, scope) {

        // This almost works but strips out tags like <h1>, <div>, etc.
        // $scope.editContent = clone.text().trim();

        // this works much …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs transclusion

22
推荐指数
1
解决办法
1万
查看次数

Angular Directive的隔离范围的可选双向绑定

我刚刚了解到你可以通过以下方式选择"反向"或回调绑定:

scope: { parentScopeFunc: '&?' }
Run Code Online (Sandbox Code Playgroud)

我试图看看是否有办法用双向绑定做类似的事情.

scope: { optional2WayBoundProp: '=?' }
Run Code Online (Sandbox Code Playgroud)

我尝试使用链接函数的element&attrsparams,但后来我失去了回到父级的双向绑定.该方法仅允许父对子更新.然后我不妨使用@范围机制.

编辑

我发现这个问题Angular JS指令,在链接函数中更改了2路数据绑定,以便回答有关的主要问题=?.但是它没有解决'可选'非约束值,如truefalse.

目标

这就是我想要完成的事情:

  • 编写一个面板指令,用于转换内容,并且可以在标题区域之外进行折叠:
    <my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel>

  • 在某些情况下,我想在父作用域中缓存面板实例的折叠状态(因此,双向绑定视图的控制器可以确定如何缓存此信息):

    <my-panel is-expanded="parentScopeProp">

  • 在其他情况下,我可能只想声明它而不绑定到父作用域属性或者我可能根本不会声明它,在这种情况下它假定它已扩展.

    <my-panel is-expanded="true/false">

据我所知,通过=分配,那表情像undefined,truefalse无法评估.

binding transclusion angularjs-directive angularjs-scope

22
推荐指数
1
解决办法
2万
查看次数

如何检查ng-content是否存在

假设我有简单的Bootstrap面板组件,带有多个转换插槽.模板示例:

<div class="panel panel-default">
  <div class="panel-heading">
    <ng-content select="my-panel-heading"></ng-content>
  </div>
  <div class="panel-body">
    <ng-content select="my-panel-content"></ng-content>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想让panel-heading可选.<div class="panel-heading">如果没有提供内容,我如何隐藏元素<ng-content select="my-panel-heading"></ng-content>

transclusion angular

20
推荐指数
2
解决办法
8790
查看次数

是否有与ngTemplateOutlet等效的vue.js?

vue.js是否具有Angular *ngTemplateOutlet指令的等效项?假设我有一些这样定义的组件:

    <template>
        <div id="independentComponent">
            Hello, {{firstName}}!
        </div>
    </template>
    <script>
        export default {
            name: "independentComponent",
            props: ['firstName']
        }
    </script>

    ...

    <template>
        <div id="someChildComponent">
            <slot></slot>
            <span>Let's get started.</span>
        </div>
    </template>
    <script>
        export default {
            name: "someChildComponent"
        }
    </script>
Run Code Online (Sandbox Code Playgroud)

我希望能够做这样的事情:

<template>
    <div id="parentComponent">
        <template #indepdentInstance>
            <independentComponent :firstName="firstName" />
        </template>
        <someChildComponent>
            <template #indepdentInstance></template>
        </someChildComponent>
    </div>
</template>
<script>
    export default {
        name: "parentComponent",
        components: {
            someChildComponent,
            independentComponent
        },
        data() {
            return {
                firstName: "Bob"
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

在Angular中,我可以使用

<div id="parentComponent">
    <someChildComponent>
        <ng-container …
Run Code Online (Sandbox Code Playgroud)

javascript transclusion vue.js

15
推荐指数
1
解决办法
447
查看次数

Angular.js和Adsense

我正在尝试在我的angular.js应用上投放广告,并且我已经完成了一些阅读并发现无法复制和粘贴普通的adsense代码.

我听说你应该"将它包装在带有翻译的指令中",我能找到的唯一例子是另一个Stackoverflow帖子: AngularJs和AddThis社交插件

有人可以帮助提供有关如何使用Google Adsense进行此操作的指导吗?

adsense angularjs transclusion angularjs-directive

11
推荐指数
2
解决办法
1万
查看次数