2015-07-15 1 views
0

, если у меня есть этот класс:

public class MainMenuModel 
    { 
     public MainMenuModel(string transKey, string stateName, string displayUrl, bool hasSubMenu= false,List<SubMenuModel>subMenu=null) 
    { 
     TransKey = transKey; 
     StateName = stateName; 
     DisplayUrl = displayUrl; 

     HasSubMenu = hasSubMenu; 

     SubMenu = subMenu; 


    } 
    public string TransKey { get; set; } 
    public string StateName { get; set; } 
    public string DisplayUrl { get; set; } 

    public bool HasSubMenu { get; set; } 

    public List<SubMenuModel>SubMenu { get; set; } 

} 

И если я заселить этот класс, как это:

MainMenu.Add(new MainMenuModel("MY_TICKETS", "account.tickets", "/account/tickets/")); 
       MainMenu.Add(new MainMenuModel("TRANSACTION_HISTORY", "account.transactionhistory", "/account/transactions")); 
       MainMenu.Add(new MainMenuModel("PAYIN","account.payin","/account/payin")); 
       MainMenu.Add(new MainMenuModel("PAYOUT", "account.payout", "/account/payout")); 
       MainMenu.Add(new MainMenuModel("TICKET_PAYOUT", "account.ticketpayout", "/account/ticketpayout")); 
       MainMenu.Add(new MainMenuModel("SETTINGS","default","default",true, 
       new List<SubMenuModel>(){ 
       new SubMenuModel("PERSONAL_INFORMATION","account.personalinformation","/account/personalinformation"), 
       new SubMenuModel("NOTIFICATIONS","account.notificationsettings","/account/notifications"), 
       new SubMenuModel("CHANGE_PASSWORD","account.changepassword","/account/passwordchange"), 
       new SubMenuModel("GAME_SETTINGS","default","default"), 
       })); 

       MainMenu.Add(new MainMenuModel("PROMOTIONS", "default", "default", true, 
       new List<SubMenuModel>(){ 
       new SubMenuModel("BONUSES","default","default"), 
       new SubMenuModel("COMPETITIONS","default","default"), 
       new SubMenuModel("VOUCHER_REDEEM","default","default"), 
       })); 

Как я могу назвать это угловой. .and передать его в $ scope.something? Любое предложение?

+0

использовать '$ http'. Трудно найти базовый угловой учебник, который не показывает, что он используется для получения данных с сервера. Проверьте учебник по сайту agular docs – charlietfl

+0

используйте $ http? это оно ? – None

+0

хорошо, это апи вам нужно для углового ajax. Если бы вы ожидали полного учебника и кода, я бы предложил сделать некоторые фундаментальные исследования самостоятельно. Это основа большинства угловых приложений, и нет недостатка в начале «как сделать». Честно говоря, этот вопрос показывает отсутствие исследовательских усилий – charlietfl

ответ

0

Моя рекомендация заключается в том, что вы настраиваете WebApi вместе с существующим уровнем ASP.NET MVC.

С этим сказанным все, что вам нужно сделать, это реализовать услуги Отдых в GETs или почт и от вашей угловой простой Invoke с $http:

стороне сервера

Использование Microsoft Web Api Controller класс " ValuesController ", но это может быть любое имя, класс, который выглядит следующим образом:

public class ValuesController : ApiController 
{    
    public string Get(int id){ return "value"; } 
    ... 

стороне клиента

В моей функции AngularJS контроллер получает значение с помощью $http службы:

$http({method:'GET',url: '/api/values/1'}).success(function(data){ 
     $scope.value =data; 
    }) 
0

Если вам нужна формирования страницы на сервере - попробуйте сериализации эту коллекцию и положить в на угловой контроллер инициализации

<div ng-controller="SomeController" ng-init="initialize('@Model.ToJson()')"> 
0

Во-первых, вам нужно настроить конечную точку сервера, с которой вы можете связаться через ajax, которая вернет структуру MainMenu как ответ JSON.

Как только у вас есть эта настройка конечной точки, есть несколько способов получить эти данные в угловом, хотя я считаю, что лучший способ - создать Угловое обслуживание для управления этими данными. Что-то вроде этого (медведь со мной, так как я не знаю подробности вашего проекта):

angular.module('application').factory('mainMenuService', ['$http', function($http) { 
    var ServiceInstance = { 
     _menuItems: [], 
     _fetchMenuItems: function() { 
     var self = this; 
     $http.post('your/server/endpoint').success(function(data, status, headers, config) { 
      // Clear exisiting items 
      self._menuItems.length = 0; 

      // Assuming menu items have been returned as JSON structure 
      // Add them all into the Service's mainMenu cache 
      self._menuItems.push.apply(self._menuItems, data.menuItems); 
     }); 
     }, 
     getMenuItems: function() { 
      if (!this._menuItems.length) { 
       this._fetchMenuItems(); 
      } 

      // No need to wait on async operation because we're using the same array instance, 
      // and angular will observe this instance and detect when new items are added. 
      return this._menuItems; 
     } 
    }; 
    return ServiceInstance; 
}]); 

Затем в ваши угловые контроллеры используют службу:

// Notice how we reference the 'mainMenuService' here, and angular will inject it automatically 
angular.module('application').controller('mainMenuController', ['mainMenuService', function (mainMenuService) { 
    $scope.mainMenuItems = mainMenuSevice.getMenuItems(); 
}]); 

Таким образом, вы отделите данные от контроллера, и вы можете повторно использовать сервис на любом контроллере, где это необходимо.

Смежные вопросы