我只是在组件和模块设置上使用ES6类创建了项目AngularJs 1.7和webpack 4。

这是我的应用主模块。

// 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>


javascript - es6组件中的AngularJs 1.7数据在模板文件上不可用-LMLPHP

这是webpack.confing中的HTML LOADER

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


我是否缺少某些内容,为什么this.test在模板内未显示任何内容?

谢谢你的帮助!

最佳答案

由于您未使用ControllerAs语法,因此应将值分配给$ scope变量,

$scope.test = 11;


您需要注入$ scope作为

 'PackagesService','$scope',
        class AppController {
            constructor (PackagesService,$scope) {
                 $scope.test = 11;
            }

09-16 12:46