Skip to content

Add a command into a menu

Mostafa Barmshory edited this page May 28, 2016 · 1 revision

اضافه کردن یک دستور به منو

هر دستور در سیستم با استفاده از یک عبارت رشته‌ای تعیین می‌شود که معادل با آن چندین کد اجرایی (که دستگیره گفته می‌شه) وجود داره. دستورهای با استفاده از سرویس $act مدیریت می‌شن و قابلی اجرا دارند. این دستورها را می‌شه به صورت یک منو ایتم به یک منو اضافه کردم. برا توی این مستند می‌خواهیم روش اضافه کردن دستور رو به صورت گام به گام به شما نشون بدیم.

تعریف دستور

دستورها و دستگیره‌ها تنها یک بار باید ثبت بشن در غیر این صورت تعداد گزینه‌های موجود در منو تکراری خواهد شد. برای همین توی تنظیم‌های ماژول‌ها دستورها رو اضافه می‌کنیم. بنابر این تعریف دستور ما به صورت زیر می‌شه:

angular.module('myApp')
    .run(function($act){
        $act.command({
            id: 'message.alert',
            label: 'Alert'
        }).handler({
            command: 'message.alert',
            handle: function(message){
                alert(message);
            }
        });
    });

اضافه کردن دستور به منو

حالا هر ماژولی می‌تونه این دستورها رو توی منوهایی که لازم داره اضافه کنه. برای نمونه فرض کنید که می‌خواهیم این دستور رو به منوی اصلی سیستم اضافه کنیم. برای این کار به صورت زیر عمل می‌کنیم.

angular.module('myApp')
    .run(function($menu){
        $menu.addItem('main:menu', {
            command: 'message.alert'
        });
    });

استفاده از منو

هر کنترولی می‌تونه این منو رو بازیابی کنه و اون رو توی نمایش استفاده کنه. برای نمونه توی کنترل زیر این منو بازیابی شده و به صورت یک فهرست از لینک‌ها نمایش داده شده است:

angular
    .module('myApp')
    .controller('MyController', function($scope, $menu){
        $menu.menu('main:menu').then(function(menu){
            $scope.menu = menu;
        });
    });

و نمایش اون هم به صورت زیر می‌شه:

<div ng-controller="MyController">
    <ul>
        <li 
            ng-repeat="m in menu.items"
            ng-show="m.visible"><a href="" ng-clcick="m.active()">{{m.label}}</li>
    </ul>
</div>