5

いくつかの html 要素を生成しているサードパーティの JavaScript コンポーネントがいくつかあります。AngularJS と結合したいと思います。

私はこのコードを試しました

<div ng-controller="ExpensesCtrl">
    <form id="expensesform">
        <input type="text" ng-model="expense.name" />
        <input type="text" ng-model="expense.amount" />
    </form>
    <button ng-click="add()">Add</button>expense | json
</div>

function ExpensesCtrl($scope) {

    $scope.expense = {};
    $scope.add = function () {
        $("#expensesform").append("<input type='text' ng-model='expense.age' />");
    };
}

http://jsfiddle.net/tChNh/

しかし、例外のようには機能しません。

これを機能させるチャンスはありますか?

4

3 に答える 3

13

これは間違った方法ですが、この特定のシナリオでは、 http://jsfiddle.net/wXZL7/1のようにする必要があります。$compile サービスを挿入します。

繰り返しますが、これは Angular で行う正しい方法ではありません。Angular の特徴は、「コントローラーで DOM をいじる必要はありません。HTML とディレクティブに任せてください」です。

要素を生成しているものをラップするディレクティブを作成し、それを実行させたいとします。例については、ディレクティブ ガイドを参照してください: http://docs.angularjs.org/guide/directive

于 2012-06-04T13:56:53.837 に答える
1

モデルを完全に同期させ、入力タイプを動的に追加または削除するための角度のある方法は、http://jsfiddle.net/3BVMm/1/を使用することです

ここで話しているプラ​​グインを提供する必要があります。おそらく、angular はこのプラグインをいくつかのコードで吹き飛ばします...

于 2012-09-18T22:41:28.110 に答える
0

私はこの答えを見つけました:データベースからの動的HTML文字列のコンパイル

多分それは他の人を助けるでしょう。$compileサービスを使用して、Angular に既知のコードを知らせる方法について説明します。

于 2013-10-22T15:22:37.010 に答える