首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能在angularjs中的双向绑定指令组件中使用相同的名称?

为什么我不能在angularjs中的双向绑定指令组件中使用相同的名称?
EN

Stack Overflow用户
提问于 2021-09-02 16:37:33
回答 1查看 82关注 0票数 1

我有一个在属性中有双向绑定的指令组件。但是,当属性与属性同名时,它似乎总是未定义的。但当我换成其他东西时,它会做我所期望的事情。

该组件的用法如下:

代码语言:javascript
复制
<div class="col-sm-4" ng-if="relatedContentsRandom">
          <related-content related-content="relatedContentsRandom" content-id="selectedVideoId"
            in-watch-later="inWatchLater" autoplay="autoplay" is-watch-list="isWatchList" />
</div>

有问题的属性是autoplay,它在将其传递到组件的控制器中具有此结构。

代码语言:javascript
复制
$scope.autoplay = {
      selected: false,
      count: 0,
    };

和组件的一部分:

代码语言:javascript
复制
scope: {
        relatedContent: "<",
        contentId: "<",
        inWatchLater: "<",
        autoplay: "=autoplay", // or autoplay: "="
        isWatchList: "<"
      },
      link: function (scope, element, attributes) {
        _init();

        function _init() {
          console.log(scope.autoplay);
          console.log(scope.relatedContent);
        }
...

如果我将组件中的属性更改为使用不同的名称,如autoplay: "=atp",然后在组件中仅更改属性名称,则它会显示正确的值。

为什么这个简单的改变是有效的?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-09-03 16:26:29

如果您希望作用域属性的外部名称和内部名称相同,则只需在后面使用不带名称的=

代码语言:javascript
复制
scope: {
    ...
    autoplay: "=",
    ...
}

下面是相关的AngularJS文档:https://docs.angularjs.org/api/ng/service/$compile#-scope-

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69034133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档