0
A
答えて
3
link
関数は、あなたが考えているようにHTMLを返すためのものではありません。スコープがディレクティブ要素にリンクされている場合、角コンパイルされたDOMを制御することを基本的に意図しています。あなたは指示のtemplate/templateUrl
オプション以上のHTMLを持つことができます。条件付き要素を使用する場合はng-if
を使用します。
指令
.directive('jobTemplate', function() {
return {
restrict: 'AE',
replace: true,
template: '<p>'+
'<span ng-if="job.JobStatus == \'Created\'">{{job.id}} was created.</span>'+
'<span ng-if="job.JobStatus == \'Processing\'">{{job.id}} is currently processing.</span>'+
'</p>',
link: function(scope, element, attrs) {}
};
})
0
あなたが実装されている方法は、あなたがDOMの一部を追加または削除条件ままにする必要がありcorrect..butでこのコードhttps://plnkr.co/edit/cpdAqWN0SeUx5Gy9CQkR?p=preview
app.directive('jobTemplate', function($compile){
return {
restrict: 'AE',
replace: true,
link: function(scope,element, attrs) {
console.log(element)
var JobStatus = scope.job.JobStatus;
var text = "<p>";
if(JobStatus === 'Created'){
text += "{{job.id}} was created."
}
else if(JobStatus === 'Processing'){
text += "{{job.id}} is currently processing."
}
text += "</p>";
element.html(text);
$compile(element.contents())(scope);
}
};
})
関連する問題
- 1. AngularJS指令 - ng-repeat内のテンプレート置換
- 2. AngularJS指令:テンプレートをコンパイルしてスコープを見る
- 3. アレイはangularjs指令
- 4. AngularJS指令値
- 5. angularJS ES6指令
- 6. Angularjs指令
- 7. Angularjsコントローラ指令
- 8. AngularJSディスプレイプリローダー - 指令
- 9. about angularJS指令
- 10. AngularJS指令
- 11. ng-transcludeを含むAngularJs指令テンプレートはコンパイルできません
- 12. AngularJS指令のTabindex
- 13. は、YouTubeのAngularJS指令
- 14. AngularJS指令テンプレートでJavascriptを実行しない
- 15. AngularJS指令イベントリスナが、私はそうのようなディレクティブ持っ
- 16. 一見単純な私は
- 17. AngularJS - ngのリピート指令
- 18. AngularJSへのダウングレードNG2指令
- 19. 指令のAngularJS更新値
- 20. AngularJS指令へのJavascript
- 21. AngularJSコントローラからの指令
- 22. ReactアプリケーションへのAngularJS指令
- 23. ブートストラップモードのための単純な角度指令
- 24. Angular 4対AngularJs指令
- 25. 私自身の指令が機能していませんAngularJS
- 26. Angularjs指令が機能しません
- 27. AngularJSのng-repeat指令でテンプレートを動的に表示していますか?
- 28. AngularJS - 指令関数呼び出しを指令へ
- 29. AngularJS 1.5.5指令:$ element.find()/ $ element.children()は常に
- 30. AngularJS指令は連想配列
を試してみてください'ng-if'を使っているので、' job'値がajaxによって読み込まれると問題はありません。 –
これも指示の範囲内で行うことができます。以前私はwordpress SPAで作った。長すぎるディレクティブなので、すべてのことは言い表せませんが、** scopeを使用して管理しました。$ watch( '$ viewContentLoaded'、function(){})**内のディレクティブです。 –
$ viewContentLoadedが読み込まれたウォッチはうまくいきません。あなたは 'job'の上にウォッチを置く必要がありますが、それは' $ watch'をコードに入れるのは悪い習慣です。ウォッチャーを避けるようにしてくださいそのコードはもっとクリーナーになります.. –