Почему я не могу получить доступ к значению $ scope из MainController в index.cshtml?

0

Я пытаюсь создать одностраничное приложение AngularJS, MVC ASP.Net, поэтому я создал новую папку в моем проекте, которая содержит app.js:

var myApp = angular.module('app', []);

и другая папка, содержащая MainController.js:

myApp.controller("MainController",['$scope', function ($scope) {
$scope.naslov = "MP3 Manager"}]);

next, inside Views/Home Я добавил это в свой тег div

 ng-app="app" ng-controller="MainController"

и, наконец, я понял:

<div class="row" ng-app="app" ng-controller="MainController">
<div class="col-md-6">
    <h2>Pjesme</h2>
    <p>{{ naslov }}</p>
    <p>
        ASP.NET MVC gives you a powerful, patterns-based way to build dynamic websites that
        enables a clean separation of concerns and gives you full control over markup
        for enjoyable, agile development.
    </p>
    <p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301865">Learn more &raquo;</a></p>
</div>
<div class="col-md-6">
    <h2>Playliste</h2>
    <p>NuGet is a free Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects.</p>
    <p><a class="btn btn-default" href="http://go.microsoft.com/fwlink/?LinkId=301866">Learn more &raquo;</a></p>
</div>

когда я запускаю это приложение, он показывает {{ naslov }} вместо "MP3 Manager"

https://imgur.com/L1gmSBz

Почему это происходит?

  • 3
    Вы искали какие-либо сообщения об ошибках, которые регистрирует ваш браузер? ищите инструменты разработчика. Такое поведение может происходить по огромным причинам из-за синтаксических ошибок - неправильный импорт
  • 0
    Поместили ли вы ссылку на скрипт в верхней части страницы .cshtml в свое приложение и в свой контроллер?
Показать ещё 2 комментария
Теги:
asp.net-mvc
asp.net-mvc-4

3 ответа

1
Лучший ответ

Убедитесь, что у вас есть ссылка на Angularjs, ваше приложение и ваш контроллер. Обычно я помещаю ссылку Angularjs и ссылку на приложение на мою страницу Layout.cshtml, а затем ссылку на контроллер на странице.cshtml.

<script src="~/Scripts/angular.js"></script>
<script src="~/Scripts/app/app.js"></script>
<script src="~/Scripts/app/MainController.js"></script>

Тебе нужны все трое.

0

maby вы можете попробовать <p ng-model="naslov ">{{naslov }}<p>

  • 0
    это, безусловно, решение вопроса. это может быть неправильное решение, и оно может использовать некоторые объяснения, но это ответ. и, наконец, «предоставление ответов, которые не требуют разъяснений от аскера» ... аскер может вставить такой ответ и получить желаемое решение, так что это не требует разъяснений. как насчет того, чтобы быть более дружелюбным и гостеприимным для n00bs?
-1

Во-первых, я согласен с Мартином Уэлкером. Вы не можете объявить ngApp и ngController на одном элементе. Это не хорошая практика. Во-вторых, проверьте, правильно ли загружена угловая. У вас может быть проблема в файле BundleConfig.cs. Небольшие опечатки могут вызывать эти глупые ошибки. Запустите его и проверьте на наличие ошибок.

  • 0
    Это может не быть хорошей практикой, но вы определенно можете поместить ngApp и ngController в один и тот же элемент. Я на самом деле никогда не слышал, что это плохая практика. Я делаю это на мини-SPA. Полноценные SPA-приложения я структурирую иначе.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню