2016-04-18 4 views
0

オブジェクトとオブジェクトを含むスコープ変数にウォッチを適用するには、コンテンツを編集可能なdivでhtmlレイアウトにしたプロパティが1つあります。 contenteditable divをタイプすると、更新されたレイアウトが返されます。ここでディレクティブのリンクメソッドでスコープのDOMオブジェクトを見る

ディレクティブからバインドさ2つの方法である私のスコープ変数である - >

this.scope = { 
    section : '=' 
}; 

そして、このセクションは次のようにオブジェクトを持っている:

this.sections = [ 
    { 
    'title' : 'Untitle Section New', 
    'type' : 'customSection', 
    'layout': '<div class="content-editable" contenteditable="true" style="width: 100%;height: 100%;-webkit-column-gap: 20px;-webkit-column-count:2;-webkit-column-rule: 1px solid red;background-color: #eeeeee;outline: none; position: relative; "><p>This is test.</p></div>' 
    } 
] 

そして、ここで私はディレクティブでこのセクションを繰り返しhtmlです:

<book-section data-ng-repeat="section in book.sections" 
     section="section" 
     data-ng-show="digitalBook.activeSection === section.index"> 
</book-section> 

ここで、私は各セクションで腕時計を適用したいと思います。コンテンツ編集可能なdivがupated場合私はdomから更新されたhtmlを取得したい。良いパフォーマンスでこれを実行するにはどうすればよいですか?

+0

https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope#$ watchCollectionを参照してください、あなたは 'contenteditable' divのためのサードパーティのプラグイン/モジュールを使用していますか? –

+0

いいえ簡単ですhtmlプロパティcontenteditable @AhmedWagdi –

+0

現在ブックセクションディレクティブのコードを投稿できますか? –

答えて

0
$scope.$watch('scope variable', function() { 
    // do something here 
}, true); 

http://docs.angularjs.org/api/ngを参照してください。$ rootScope.Scope#$すべてのプロパティを見てthird argument as trueを渡し

を見ます。はい、パフォーマンス上の懸念がありますが、あなたのケースは深い時計です。

$watchCollectionを使用できます。これは、arrayまたはobjectの最初のレベルのみを表示します。

scope.$watchCollection('scope variable', function (newVal, oldVal) {//do something here}); 

+0

私はこれを試して、それは動作していません。リンクメソッドでは、次のようにhtmlの指示にレイアウトを追加します: - ctrl.sectionElement = $( '。section'、element)[0]; ctrl.sectionElement.innerHTML = scope.section.layout; .. htmlを追加した後、コンテンツを編集可能なdivに入力します。その時は動作していません。 @ Thalaivar –

+0

あなたはdomにhtmlを追加していますが、その後何が起こるはずですか?あなたはより明確になることができます – Thalaivar

+0

実際に私はwanaページのサムネイルを作成します。だから私はサムネイルの更新されたHTMLが必要です。だから、私はレイアウトオブジェクトを見たいと思うし、それが変更されるとサムネイルに反映されます。 @ Thalaivar –

関連する問題