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;
}
})();
あなたの問題はコントローラにありません。あなたのテンプレートとルート宣言を共有してください。 –
@DayanMorenoLeonあなたは正しいです!私のカスタムタグはコントローラーを使用していたので、毎回作成していました...ありがとう! –