代码之家  ›  专栏  ›  技术社区  ›  Gustav

Angularjs组件,通过函数传递单向绑定是反模式吗?

  •  0
  • Gustav  · 技术社区  · 7 年前
    angular.module("app").component("first", {
       controller: function() {
          this.getFoo = () => {
             return this.condition ? this.foo : null;
          };
          this.changeCondition = () => {
            this.condition = !this.condition; 
          }
       }
       template: '<div>hello <second foo="$ctrl.getFoo()"></second>' + 
       '<button ng-click="$ctrl.changeCondition()"></button></div>'
    })
    .component("second", {
       bindings: {
         foo: "<"
       },
       template "<span>using foo here: {{$ctrl.foo}}</span>"
    })
    

    这是一个愚蠢的例子,但我在一个项目中看到一个值以这种方式传递给子组件。我四处寻找这是一种反模式的建议,但找不到任何建议。

    它是?是否存在这样一种情况,即从函数的返回中将值传递给子组件是一件好事?

    否则我脑海中最明显的事情就是 $ctrl.foo 从“第一”组件。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Petr Averyanov    7 年前

    函数的任何使用 $watch 表达式是反模式的。(当你写作时 <component prop="..." 它创建了一块手表)

    原因是此函数值是在每个摘要中计算的,所以您的函数运行每个摘要。在正常的应用程序中,你会消化时间~观察者的数量,但如果你有函数,谁知道呢?您必须深入研究每个函数以分析时间。 函数还可以修改另一个变量,触发另一个摘要。等