cari

Rumah  >  Soal Jawab  >  teks badan

angular.js - sudut memerlukan masalah pengawal pemuatan

Item konfigurasi ditakrifkan dalam main.js

requirejs.config({
    paths: {
        jQuery: '../lib/jquery.min',
        angular: '../lib/angular.min',
        angularRouter: '../lib/angular-route.min',
        angularAnimate: '../lib/angular-animate.min',
        ngNotify: '../lib/angular-atomic-notify',
        api: '../js/common/api',
        utils: '../js/common/utils'
    },
    shim: {
        'angular': {
            deps: ['jQuery'],
            exports: 'angular'
        },
        angularRouter: {
            deps: ['angular'],
            exports: 'ngRoute'
        },
        angularAnimate: {
            deps: ['angular']
        },
        ngNotify: {
            deps: ['angular']
        },
        api: {
            deps: ['angular']
        },
        utils: {
            deps: ['angular']
        }
    }
});

// 手动开启angular服务
require(['angular', 'app'], function(angular){
    angular.element(document).ready(function(){
        angular.bootstrap(document, ['yceMain']);
    });

});

Tentukan modul dan laluan dalam apl

app.js

define(['angular', 'angularRouter', 'ngNotify', 'angularAnimate', 'api', 'utils'], function(angular){

    var yceMain = angular.module('yceMain',['ngRoute', 'atomic-notify', 'ngAnimate']);


    yceMain.config(['$routeProvider', '$controllerProvider', function ($routeProvider, $controllerProvider){

        $routeProvider
            .when('/dashBoard', {
                templateUrl: 'views/dashBoard.html'

            })

            .when('/appManage', {
                templateUrl: 'views/appManage.html',
                controller: 'appManage'
            })
    }]);




    return yceMain;

});

appManage controller.js kod adalah seperti berikut

define(['app'], function (yceMain){

    yceMain.controller('appManage', ['$scope' , function ($scope){

        $scope.aa = 11;
    }]);


});

Ralat halaman

 Error: [ng:areq] http://errors.angularjs.org/1.5.0/ng/areq?p0=appManage&p1=not%20aNaNunction%2C%20got%20undefined
 

Jika anda mentakrifkan pengawal appManage dalam app.js, anda boleh mendapatkan data dalam paparan, tetapi jika anda menggunakan define(['app'],xx) dalam appManage controller.js untuk mendapatkan angular.module, anda tidak boleh mendapatkan itu. Tolong selesaikan.

漂亮男人漂亮男人2842 hari yang lalu1032

membalas semua(2)saya akan balas

  • 我想大声告诉你

    我想大声告诉你2017-05-15 17:10:36

    define(['app'], function (yceMain){
        yceMain.controller('appManage', ['$scope' , function ($scope){
            $scope.aa = 11;
        }]);
    });

    Apl ini sepatutnya tidak disuntik. Sila console.log(yceMain).
    Jika anda hanya mahu mengikat pengawal appManage ke modul aplikasi, anda sepatutnya boleh menulis seperti ini:

    // appManage controller.js
    angular.module('app')
    .controller('appManage', ['$scope' , function ($scope){
           $scope.aa = 11;
    }]);

    Sudah tentu, pengawal ini juga mesti diperkenalkan ke dalam halaman

    Saya menggunakan ui-router + oclazyload

    balas
    0
  • 某草草

    某草草2017-05-15 17:10:36

    Selesai. Masalahnya ialah sebelum sudut memulakan perkhidmatan ng-app, semua pengawal dan perkhidmatan mesti didaftarkan.
    Tetapi idea saya adalah untuk memuatkan pengawal secara tidak segerak melalui memerlukan.

    function ctrlRegister (ctrlName, ctrlModule) {
                    return function ($q) {
                        var defer = $q.defer();
                        require(ctrlModule, function (controller) {
    
                            $controllerProvider.register(ctrlName, controller);
    
                            defer.resolve();
                        });
                        return defer.promise;
                    }
                }
                
                

    Fungsi ini menyelesaikan masalah dengan sempurna, terima kasih /a/11….

    balas
    0
  • Batalbalas