背景:私はcollection-repeat
(Angularのng-repeat
を超えるIonic改善)を使用して連絡先リストを表示するIonicアプリケーションを持っています。上部には、表示する連絡先のリストを決定するための2つの切り替えボタンがあります。連絡先の画像、タイトル、サブタイトルを表示するカスタムディレクティブを作成しました。カスタムディレクティブのスコープモデルは定義されていません
HTML
<ion-content>
<ion-list>
<div class="item item-avatar" collection-repeat="contact in viewing" force-refresh-images="true">
<profile-or-initials ng-model="contact"></profile-or-initials>
<h2>{{contact.title}}</h2>
<p>{{contact.subtitle}}</p>
</div>
</ion-list>
</ion-content>
JS
var app = angular.module('myApp', ['ionic']);
app.directive('profileOrInitials', function($state) {
return {
restrict: "E",
scope: {
ngModel: '='
},
replace: true,
template: '<div class="profileOrInitials"></div>',
link: function(scope, element) {
var getInitials = function(user) {
return user.title.substring(0, 2);
};
var process = function() {
var image = scope.ngModel.feed_pic_url;
var initials = getInitials(scope.ngModel);
var html = '';
if (image) {
html = '<img src="' + image + '"></img>';
} else {
image = "http://science-all.com/images/wallpapers/blue-image/blue-image-14.jpg";
html = '<img src="' + image + '"></img><div class="initials">' + initials + '</div>';
}
element.html(html);
};
//var destroy = scope.$watch('ngModel', function() {
// if (scope.ngModel) {
process();
//destroy();
//}
//});
}
};
})
問題:私はそれのためにscope.$watch
機能を追加しない限り、ディレクティブのngModel
スコープがundefined
です。さらに、時計のdestroy
関数を呼び出すと、ボタンをクリックするとピクチャが更新されないので、ディレクティブも機能しなくなります。
ここでは、plunker:http://plnkr.co/edit/t4opQdqr4VStpqP6MdQnです。
誰でもここに何が起こっているのか説明できますか?私は実際の解決策に気にしない。私は何が起こっているのか分かりません。私の疑問は、link
の機能がcollection-repeat
より前に実行されていることです。その時点でモデルは定義されていませんが、優先順位を下げようとしたところ、まだ動作しません。 (collection-repeat has a priority of 1000)。
を使用して取得することができます。時計のソリューションは私のために働く。 – user3791775
トップのボタン:「google contacts」と「facebook contacts」:) –
ngModelコントローラの機能を必要としないもののために 'ngModel'を使っている点もありません。ちょうど '$ watch'の' newValue'引数が定義されていて、うまく動作するはずです – charlietfl