検索

ホームページ  >  に質問  >  本文

angular.js - Angular コントローラーとディレクティブの相互作用

HTML 部分

リーリー

コマンド

リーリー

コントローラー

リーリー

コマンドでコントローラーの $scope 属性を変更する方法

淡淡烟草味淡淡烟草味2798日前764

全員に返信(6)返信します

  • 阿神

    阿神2017-05-15 16:55:35

    無責任かつ未検証ですが、いくつかのアイデアを紹介します:
    1. addTaskClassBoxDisplay をオブジェクトの下に配置します (例:
    ) scope.obj.addTaskClassBoxDisplay = true
    2. メッセージを使用する
    3.サービスを利用する

    上記の 3 つの方法は、Angular のモジュール間でデータを共有する一般的な方法でもあり、さまざまなシナリオに適応できます。

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 16:55:35

    http://stackoverflow.com/questions/14115701/angularjs-create-a-directi...


    リーリー

    返事
    0
  • 为情所困

    为情所困2017-05-15 16:55:35

    まず独立したスコープを開き、「=」を使用してスコープのオブジェクトに対して双方向バインディングを実行します。以下の例のように、コマンドのobjがバインドされてaddTaskClassBoxDisplayオブジェクトに送信されます

    リーリー

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-15 16:55:35

    この質問をする前に、質問を修正させてください。
    コントローラーの $scope を変更したいとします。まず、自分で定義した命令はコントローラー内のスコープです。別のスコープを継承したり作成したりしません。したがって、命令のスコープ内の属性を変更すると、この命令を参照するコントローラーのスコープの対応する属性も確実に変更されることになります。
    コントローラを作成したときに、なぜコントローラのスコープを変更しなかったのかと疑問に思われるかもしれません。
    理由は
    を使用したからです iElement.on('click', '#addTaskClass', function(event) {
    scope.addTaskClassBoxDisplay = true;
    自分で定義したクリック リスナーは、scope 属性の変更をトリガーしますが、Angular にダーティ チェックを実行するように通知することはありません。つまり、addTaskClassBoxDisplay を変更すると、ページ上で応答しなくなります。
    このエラーを修正する方法。 $apply() を追加するだけです。ダーティ チェックを手動でトリガーします。使用方法は自分で百度に問い合わせてください。
    さて、あなたの質問に戻りましょう。ディレクティブでコントローラーのスコープを変更する方法。
    1. ディレクティブの内部属性から始めましょう。
    ディレクティブのscope属性とその3つのメソッドは、コントローラーのスコープを変更できます。
    1.スコープが定義されていないか、スコープ: false。コントローラーのスコープを直接使用します
    2. スコープ: true。コントローラーを継承するスコープです。現時点では、変更するコンテンツはオブジェクトとして定義するのが最適です。
    3. スコープ: {key:'=key'}。独立したスコープです。変更方法は上記と同じですが、オブジェクトとして定義するのがベストです
    それから別の人に言います。 iAttrs を使用して、ディレクティブの属性として定義します。
    var model = $parse(iAttrs.addTaskClassBoxDisplay);
    iElement.on('click', '#addTaskClass', function(event) {
    model.assign(scope,true);
    スコープ.$apply();
    2. ラジオを使用します。具体的には百度。
    3. サービスを利用して配達します。
    4. この命令は $rootScope を呼び出し、コントローラーのスコープ属性を $rootScope 属性と等しくします。 (これはやめてください)
    もう仕事に行く時間なので、後で Baidu を使用できます。

    返事
    0
  • 世界只因有你

    世界只因有你2017-05-15 16:55:35

    http://www.hubwiz.com/course/54f3ba65e564e50cfccbad4b/
    基本: http://www.hubwiz.com/course/547c3e3b88dba0087c55b4e5/

    返事
    0
  • 漂亮男人

    漂亮男人2017-05-15 16:55:35

    とても良い質問です、私も聞きたいです

    返事
    0
  • キャンセル返事