-1

私は、このガイドに従ってレガシー 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」に置き換えると (正しく挿入されます)、methodtaskui オブジェクトが正常に出力されます。

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

コントローラーのコードは次のとおりです。

class Controller {

   constructor() {

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

1 に答える 1

2

問題は angularjs スコープの誤解でした。分離スコープを使用する場合、変数をバインドするだけでは十分ではありません。また、属性として値を渡す必要があります。ここで解決策 3 を参照してください: https://stackoverflow.com/a/17900556/555493

コード (元の例を使用) は次のようになります。

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

// parent template
<component taskui="taskui"></component>
于 2016-10-27T00:09:30.460 に答える