AngularJs 1.7 Данные внутри компонента es6 недоступны в файле шаблона - PullRequest
0 голосов
/ 20 мая 2018

Я просто создаю проект AngularJs 1.7 и webpack 4 с классом ES6 по настройке компонентов и модулей.

это основной модуль моего приложения.

// Core Styles
import './styles/main.scss';

// Core Angular
import angular from 'angular';

import { AppComponent } from "./app.component";
import CommonModule from './modules/common/common.module';
import PackagesModule from './modules/packages/packages.module';
import PackagesService from "./services/packages.service";

// These all export the module name
// import ngAnimateModuleName from 'angular-animate';

const dependencies = [
    // ngAnimateModuleName
    CommonModule.name,
    PackagesModule.name
];

angular.module('app', dependencies)
    .component('appComponent', AppComponent)
    .service('PackagesService', ['$http', PackagesService]);

это мой файл компонента js.

import './app.component.scss';

export const AppComponent = {
    template: require('./app.component.html'),
    controller: [
        'PackagesService',
        class AppController {
            constructor (PackagesService) {
                this.test = 11;
            }
    }]
};

Но, похоже, переменная test недоступна в файле шаблона.

<header-component></header-component>

<div class="container">
    <div class="row">
        <div class="col-6">
            <div class="packages-name-box">
                <h1 class="homepage-title">Packages Name {{ test }}</h1>
                <packages-list-group pages-data="pagesPackageData"></packages-list-group>
            </div>
        </div>
    </div>
</div>

enter image description here

Иэто HTML-ПОГРУЗЧИК внутри webpack.confing

{
    // HTML LOADER
    // Reference: https://github.com/webpack/raw-loader
    // Allow loading html through js
    test: /\.html$/,
    loader: 'raw-loader'
}

Я что-то упустил, почему this.test ничего не отображает внутри шаблона?

Спасибо за вашу помощь!

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

В компонентах angularjs все переменные, объявленные с this, могут быть доступны с помощью объекта $ ctrl в области видимости.Вы должны использовать:

<h1 class="homepage-title">Packages Name {{ $ctrl.test }}</h1>

вы можете изменить имя объекта на любое другое, на controllerAs, например: (но это $ctrl по умолчанию)

export const AppComponent = {
template: require('./app.component.html'),
controllerAs: 'vm',
controller: [
    'PackagesService',
    class AppController {
        constructor (PackagesService) {
            this.test = 11;
        }
}]
};

см. Angularjsкомпонент документа: https://docs.angularjs.org/guide/component

0 голосов
/ 20 мая 2018

Поскольку вы не используете синтаксис ControllerAs, вам следует присвоить значение переменной $ scope,

$scope.test = 11;

, вам необходимо ввести $ scope как

 'PackagesService','$scope',
        class AppController {
            constructor (PackagesService,$scope) {
                 $scope.test = 11;
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...