$ scope breaks Приложение с портлетами Angularjs

0

Я пытаюсь заставить AngularJS работать на моей странице.jsp с помощью простого приложения, скопированного непосредственно из примера W3s

UPDATE: я пытаюсь использовать угловой в портлете Liferay, так что вот размер моего кода в view.jsp

<%
/**
 * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
 */
%>

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>

<portlet:defineObjects />  

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myCtrl">

First Name: <input type="text" ng-model="firstName"><br>
Last Name: <input type="text" ng-model="lastName"><br>
<br>
Full Name: {{firstName + " " + lastName}}

</div>

<script type='text/javascript'>
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.firstName = "John";
        $scope.lastName = "Doe";
    });
</script>

Тем не менее, как только я пытаюсь использовать мой объект с объектом Controller + $, приложение разбивается, и я получаю ошибку

Failed to instantiate module myApp due to:
Error: [$injector:modulerr] http://errors.angularjs.org/1.5.6/$injector/modulerr?p0=n...)
    at Error (native)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:6:412
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:40:134
    at q (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:7:355)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:39:222)
    at https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:39:391
    at q (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:7:355)
    at g (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:39:222)
    at db (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:43:246)
    at Ac.c (https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js:21:19

Я не могу понять, почему это так. Есть идеи?

  • 1
    Быстрая проверка подтвердила, что пример работает должным образом (используется jsbin). Можете ли вы поделиться остальным кодом? Как настроен проект? Вопрос должен быть где-то еще. В частности, куда вы загружаете зависимости и т. Д. Также, пожалуйста, смотрите: stackoverflow.com/questions/22406633/…
  • 0
    Что такое полная ссылка на ошибку? " errors.angularjs.org/1.5.6/$injector/modulerr ..."
Показать ещё 3 комментария
Теги:
liferay

1 ответ

0

По какой-то причине, из вашей ошибки, похоже, что код думает, что вы пытаетесь ввести "a".

Если возможно, я рекомендую вам поместить это в отдельный скрипт и завернуть в IIFE:

app.js:

(function(){
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
        $scope.firstName = "John";
        $scope.lastName = "Doe";
    });
})();

И затем включите его в свой HTML:

<script src="app.js"></script>
  • 0
    Спасибо, Брайан, не повезло, однако. Я вижу несколько разных способов объединения Angular и Liferay, которые мне, возможно, придется изучить. Это странно, потому что приложение будет работать без определения контроллера в моем .js

Ещё вопросы

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