В контроллере MVC я пытаюсь передать коллекцию данных обратно в представление.
private string GetEntityList()
{
var entities = new[]
{
new EntityList{ EntityId = 1, EntityName = "Entity 1"},
new EntityList{ EntityId = 2, EntityName = "Entity 2"},
new EntityList{ EntityId = 3, EntityName = "Entity 3"},
new EntityList{ EntityId = 4, EntityName = "Entity 4"},
new EntityList{ EntityId = 5, EntityName = "Entity 5"}
};
var settings = new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
return JsonConvert.SerializeObject(entities, Formatting.None, settings);
}
И я отправляю его на представление через строчную модель
public ViewResult Index()
{
return View("index","", GetEntityList());
}
В моем файле cshtml я пытаюсь присвоить модели свойство mvcData, которое является частью службы, которую я определяю
app.factory("searchAttributes", function() {
console.log(@Html.Raw(Model));
return { mvcData:@Html.Raw(Model) };
});
</script>
Этот тег скрипта находится внутри моего ng-приложения, поэтому его в области приложения, однако, когда я пытаюсь ссылаться, если из app.controller
он отображается как неопределенный
app.controller('searchController', ['$scope', 'searchService', 'ngNotifier', '$log', '$timeout', 'searchAttributes', function ($scope, searchService, searchAttributes, ngNotifier, $log, $timeout) {
var vm = this;
//bootstraped data from MVC
$scope.searchAttributes = searchAttributes.mvcData;
}]);
Глядя на модель, когда она возвращается в html, я вижу, что это действительный объект. Использование console.log(@Html.Raw(Model)
Я вижу, что объекты возвращаются
Object[0] entityId: 1 entityName: "Entity 1"
Object[1] entityId: 2 entityName: "Entity 2"
Любые идеи, почему этот объект не поднимается в контроллере? Несмотря на то, что я определял его как зависимость, как будто ng-controller
не обнаруживает/не загружает его.
спасибо в advacnce
Ваши зависимости не работают:
app.controller('searchController', ['$scope', 'searchService', 'ngNotifier', '$log', '$timeout', 'searchAttributes', function ($scope, searchService, searchAttributes, ngNotifier, $log, $timeout) {
должно быть
app.controller('searchController', ['$scope', 'searchService', 'ngNotifier', '$log', '$timeout', 'searchAttributes', function ($scope, searchService, ngNotifier, $log, $timeout, searchAttributes) {
Ваш текущий код будет означать ваш searchAttributes.mvcData;
на самом деле ссылается на timeout.mvcData
которая не определена.