2016-04-16 8 views
0

ngRouteでangularjs 1を使用して1ページのアプリケーションを構築しています。アングルコントローラーの属性が変更されるたびに初期化されます

私はすべての投稿を含む配列である 'posts'という属性を持つコントローラ(PostsController)を使用してビュー(/ posts)を持っています。

ここで私がtest()にコメントすると、「Hi ...」がコンソールに1回印刷されます。 しかし、コメントを外すと、 "Hi ..."が1 + vm.posts.length回(この例では7回)印刷されます。

また、後続の関数呼び出しも1 + vm.posts.length回実行されるため、問題があります。

これを引き起こしている原因と解決方法については、

編集:誰かが私のテンプレート/ルートに誤りがあるかもしれないと示唆し、彼は正しくありました。私はng-repeatの中でカスタムディレクティブを使用しています。削除すると "Hi ..."が一度だけ表示されます。

記事-index.htmlを:

<div ng-repeat='post in vm.posts'> 
    <post post="post"></post> 
</div> 

Post.directive.js:

var directive = { 
     controller: 'PostsController', 
     controllerAs: 'vm', 

これは、コントローラを初期化した

(function() { 
    'use strict'; 

    angular 
    .module('thingy.posts.directives') 
    .directive('post', post); 

    function post() { 
    var directive = { 
     controller: 'PostsController', 
     controllerAs: 'vm', 
     restrict: 'E', 
     scope: { 
     post: '=' 
     }, 
     templateUrl: '/static/templates/posts/post.html' 
    }; 

    return directive; 
    } 
})(); 
+0

あなたの問題はコントローラにありません。あなたのテンプレートとルート宣言を共有してください。 –

+0

@DayanMorenoLeonあなたは正しいです!私のカスタムタグはコントローラーを使用していたので、毎回作成していました...ありがとう! –

答えて

0

問題は、私のディレクティブ宣言で嘘をつきました私のページのすべての投稿について。

関連する問題