无法绑定到 Angular 1.5 组件中的根作用域

Cannot bind to rootscope in Angular 1.5 component

我正在按照本指南消除遗留 Angular 1.5 应用程序的 "scope soup" 架构:http://teropa.info/blog/2015/10/18/refactoring-angular-apps-to-components.html#replace-external-reference-with-bound-input

我试图删除对 $rootscope.taskui 的引用,因此我尝试向组件添加绑定。不幸的是,taskui 现在未定义。 "component" 是一个 Angular 1.5 组件(这只是引擎盖下的一个普通指令)。我做错了什么吗?

如果您将 "this.taskui" 替换为“$rootscope.taskui”(正确注入),method 会很好地打印 taskui 对象。

export default {
   bindings: {
     taskui: '='
   },
   controller,
   templateUrl: "component.html"
 };

控制器代码如下:

class Controller {

   constructor() {

      this.method = () => console.log(this.taskui)
   }
}

问题是对 angularjs 范围的误解。使用独立作用域时,仅仅绑定一个变量是不够的。您还必须将该值作为属性传递。请在此处查看解决方案 #3:

代码(使用原始示例)应为:

// component
export default {
  bindings: {
    taskui: '='
  },
  controller,
  templateUrl: "component.html"
 };

// parent template
<component taskui="taskui"></component>