যখন গাছের কাঠামো বড় হয়, তখন কৌণিক (1.4.x অবধি) পুনরাবৃত্ত টেম্পলেটটি সরবরাহ করতে খুব ধীর হয়ে যায়। এই পরামর্শগুলির একটি সংখ্যা চেষ্টা করার পরে, আমি একটি সাধারণ এইচটিএমএল স্ট্রিং তৈরি করে ng-bind-htmlএবং এটি প্রদর্শনের জন্য ব্যবহার করে শেষ করেছি। অবশ্যই, এটি কৌনিক বৈশিষ্ট্যগুলি ব্যবহার করার উপায় নয়
একটি খালি-হাড়ের পুনরাবৃত্তি ফাংশন এখানে দেখানো হয়েছে (নূন্যতম এইচটিএমএল সহ):
function menu_tree(menu, prefix) {
var html = '<div>' + prefix + menu.menu_name + ' - ' + menu.menu_desc + '</div>\n';
if (!menu.items) return html;
prefix += menu.menu_name + '/';
for (var i=0; i<menu.items.length; ++i) {
var item = menu.items[i];
html += menu_tree(item, prefix);
}
return html;
}
// Generate the tree view and tell Angular to trust this HTML
$scope.html_menu = $sce.trustAsHtml(menu_tree(menu, ''));
টেমপ্লেটে, এটি কেবল এই এক লাইনের প্রয়োজন:
<div ng-bind-html="html_menu"></div>
এটি অ্যাংুলারের সমস্ত ডেটা বাইন্ডিংকে বাইপাস করে এবং পুনরাবৃত্তি টেম্পলেট পদ্ধতিগুলির সময়ের একটি ভগ্নাংশে কেবল HTML প্রদর্শন করে।
এর মতো মেনু কাঠামো সহ (লিনাক্স ফাইল সিস্টেমের একটি আংশিক ফাইল ট্রি):
menu = {menu_name: '', menu_desc: 'root', items: [
{menu_name: 'bin', menu_desc: 'Essential command binaries', items: [
{menu_name: 'arch', menu_desc: 'print machine architecture'},
{menu_name: 'bash', menu_desc: 'GNU Bourne-Again SHell'},
{menu_name: 'cat', menu_desc: 'concatenate and print files'},
{menu_name: 'date', menu_desc: 'display or set date and time'},
{menu_name: '...', menu_desc: 'other files'}
]},
{menu_name: 'boot', menu_desc: 'Static files of the boot loader'},
{menu_name: 'dev', menu_desc: 'Device files'},
{menu_name: 'etc', menu_desc: 'Host-specific system configuration'},
{menu_name: 'lib', menu_desc: 'Essential shared libraries and kernel modules'},
{menu_name: 'media', menu_desc: 'Mount point for removable media'},
{menu_name: 'mnt', menu_desc: 'Mount point for mounting a filesystem temporarily'},
{menu_name: 'opt', menu_desc: 'Add-on application software packages'},
{menu_name: 'sbin', menu_desc: 'Essential system binaries'},
{menu_name: 'srv', menu_desc: 'Data for services provided by this system'},
{menu_name: 'tmp', menu_desc: 'Temporary files'},
{menu_name: 'usr', menu_desc: 'Secondary hierarchy', items: [
{menu_name: 'bin', menu_desc: 'user utilities and applications'},
{menu_name: 'include', menu_desc: ''},
{menu_name: 'local', menu_desc: '', items: [
{menu_name: 'bin', menu_desc: 'local user binaries'},
{menu_name: 'games', menu_desc: 'local user games'}
]},
{menu_name: 'sbin', menu_desc: ''},
{menu_name: 'share', menu_desc: ''},
{menu_name: '...', menu_desc: 'other files'}
]},
{menu_name: 'var', menu_desc: 'Variable data'}
]
}
আউটপুট হয়ে যায়:
- root
/bin - Essential command binaries
/bin/arch - print machine architecture
/bin/bash - GNU Bourne-Again SHell
/bin/cat - concatenate and print files
/bin/date - display or set date and time
/bin/... - other files
/boot - Static files of the boot loader
/dev - Device files
/etc - Host-specific system configuration
/lib - Essential shared libraries and kernel modules
/media - Mount point for removable media
/mnt - Mount point for mounting a filesystem temporarily
/opt - Add-on application software packages
/sbin - Essential system binaries
/srv - Data for services provided by this system
/tmp - Temporary files
/usr - Secondary hierarchy
/usr/bin - user utilities and applications
/usr/include -
/usr/local -
/usr/local/bin - local user binaries
/usr/local/games - local user games
/usr/sbin -
/usr/share -
/usr/... - other files
/var - Variable data