1

http://jsfiddle.net/RW46a/2/

<div ng-app='myApp' ng-controller='MyController'>
    <button id="addbtn">add dynamic content</button>
    <div id="mycontent">
        <button ng-click='click()'>click here</button><br/>
        <!-- another button will be added here but its ng-click won't work -->
    </div>
</div>

私のアプリは、フィドルに示されているように、jQuery を使用して HTML コードを DOM に直接追加する外部依存関係を使用しています (ため息)。

動的に追加されたコードの一部を角度付けできるようにしたいと思います。たとえば、「mycontent」divに追加された新しいボタンにng-clickディレクティブを追加します。上記のコメントを参照してください。角度に優しい方法でこれを行う最良の方法は何ですか? 私は $compile を利用しようとしましたが、すぐにハッキーになりました。

ありがとう!

4

2 に答える 2

1

このフィドルは、あなたが試みていることを達成するための多くの方法の 1 つを示しています。さて、これがあなたの状況に適していると言っているのではありません。ただし、これ以上の情報がなければ、何を達成しようとしているのかを正確に知ることは困難です。

を使用する必要のない angular を使用して「動的な」DOM 操作を実現する方法がよくあります$compile。私はあなたに1つのアイデアを与えたことを願っています.

ng-show基本的に、最初の要素に使用してng-repeatから残りの要素に使用できます。

JS:

var app = angular.module('myApp', []);

function MyController($scope) {
  $scope.click = function() {
    alert('Clicked');
  };

    $scope.add = function() {
       $scope.contentCollection.push(1);
    }

  $scope.contentCollection = [];
}

HTML:

<div ng-app='myApp' ng-controller='MyController'>
    <button ng-click="add()" id="addbtn">add dynamic content</button>
    <div ng-show="contentCollection.length > 0" ng-repeat="content in contentCollection">
        <button ng-click='click()'>click here</button><br/>
    </div>
</div>
于 2013-08-18T21:32:40.090 に答える
0

ng-includeを使用して、コード フラグメントを DOM に追加したいと思います。これにより、html をロードする前に角度要素がコンパイルされるため、ng-click などのディレクティブを使用できます。

これにより新しい子スコープが作成されるため、コントローラーのスコープに直接アクセスできないことに注意してください。

于 2013-08-18T20:00:26.457 に答える