无法绑定到Angular 1.5组件中的rootscope

时间:2016-10-24 21:38:34

标签: angularjs angularjs-scope ecmascript-6 angularjs-rootscope angular-components

我正在消除"范围汤"遵循本指南的传统Angular 1.5应用程序的体系结构:http://teropa.info/blog/2015/10/18/refactoring-angular-apps-to-components.html#replace-external-reference-with-bound-input

我试图删除对$rootscope.taskui的引用,因此我尝试添加对该组件的绑定。不幸的是,taskui现在未定义。 "组件"是一个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)
   }
}

1 个答案:

答案 0 :(得分:2)

问题是对angularjs范围的误解。使用隔离范围时,仅绑定变量是不够的。您还必须将值作为属性传递。请在此处查看解决方案#3:https://stackoverflow.com/a/17900556/555493

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

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

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