2017-10-14 127 views
0

我是Meteor新手。 我实现angularui:angularui路由器,但我有一个问题,我告诉你:Meteor JS中的负载控制器

我有以下文件夹:

客户

- > main.js

- > index.html

- >登录

- > l ogin.js

- > login.html的

- >家

- > home.html的

- >兼容性

main.js包含以下内容:

import angularMeteor from 'angular-meteor'; 
import uiRouter from 'angular-ui-router'; 

angular.module('angularUPF', [ 
    angularMeteor, 
    uiRouter 
]); 

angular.module('angularUPF').config(function($stateProvider, $urlRouterProvider) { 

    $urlRouterProvider.otherwise("/"); 

    $stateProvider 
    .state('home', { 
     url: "/", 
     templateUrl: "client/home/home.html" 
    }) 
    .state('login', { 
     url: "/login", 
     templateUrl: "client/login/login.html", 
     controller: "loginCtrl" 
    }); 
}); 

个模板加载我很好,但是控制器告诉我,它不存在,

loginCtrl.js

import angular from 'angular'; 
import angularMeteor from 'angular-meteor'; 
import uiRouter from 'angular-ui-router'; 

import template from './login.html'; 

angular.module('angularUPF', []) 
    .controller('loginCtrl', function($scope) { 
     'ngInject'; 

     $scope.firstName = "Anthony"; 
    $scope.lastName = "Camus"; 
    }); 

错误:

Uncaught SyntaxError: Unexpected token < 
    at eval (<anonymous>) 
    at Function.globalEval (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:56114) 
    at text script (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64984) 
    at ajaxConvert (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64019) 
    at done (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64483) 
    at XMLHttpRequest.<anonymous> (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64899) 
    at Object.send (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64951) 
    at Function.ajax (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64432) 
    at Function.jQuery._evalUrl (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:64595) 
    at domManip (modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:61058) 


Error: [ng:areq] Argument 'loginCtrl' is not a function, got undefined 
http://errors.angularjs.org/1.4.8/ng/areq?p0=loginCtrl&p1=not%20aNaNunction%2C%20got%20undefined 
    at http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:93:12 
    at assertArg (http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:1840:11) 
    at assertArgFn (http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:1850:3) 
    at http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:9183:9 
    at http://localhost:3000/packages/modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:44724:28 
    at invokeLinkFn (http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:8866:9) 
    at nodeLinkFn (http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:8360:11) 
    at compositeLinkFn (http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:7756:13) 
    at publicLinkFn (http://localhost:3000/packages/angular_angular.js?hash=b4b9bf43d4c591e6e90c1fe259c40d8bb252d2e8:7636:30) 
    at updateView (http://localhost:3000/packages/modules.js?hash=acbbea235a5e860a943adbe75f051d48f27c799a:44643:23) 

我知道好一点AngularJS,我知道当我没有在index.html中加载JS文件时出现该错误。 问题是,在流星我试图做同样的事情,它并没有为我工作。

总结:我需要一种方法来加载代表控制器的JS文件。

我尝试添加一行代码的文件服务器/ main.js

import { Meteor } from 'meteor/meteor'; 
import '../imports/database/connect_db.js'; 
import '../imports/database/init_db.js'; 

Meteor.startup(() => { 
    console.log('Server running!'); 
    $.getScript("../client/login/loginCtrl.js"); 
}); 

但它告诉我,$没有定义

我的包:

# Meteor packages used by this project, one per line. 
# Check this file (and the other files in this directory) into your repository. 
# 
# 'meteor add' and 'meteor remove' will edit this file for you, 
# but you can also edit it by hand. 

[email protected]    # Packages every Meteor app needs to have 
[email protected]  # Packages for a great mobile UX 
[email protected]     # The database Meteor supports right now 
[email protected]   # Reactive variable for tracker 
[email protected]     # Meteor's client-side reactive programming library 

[email protected] # CSS minifier run for production mode 
[email protected] # JS minifier run for production mode 
[email protected]   # Server-side component of the `meteor shell` command 

[email protected]    # Allow all DB writes from clients (for prototyping) 
twbs:bootstrap 
jquery 
fourseven:scss 
angular 
es5-shim 
angularui:angular-ui-router 
babel-compiler 

回答

0

它的工作如下:

我修改了loginCtrl.js:

Meteor.startup(function(){ 
    angular.module('angularUPF') 
     .controller('loginCtrl', function($scope) { 
     'ngInject'; 

     $scope.firstName = "John"; 
     $scope.lastName = "Doe"; 
     }); 
}) 

而且login.html的是这样的:

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

是否真的正确的方式?

0

问题出现在这一行:

import template from './login.html'; 

它应该是这样的:

import './login.html'; 

这里没有实际进口(应该不是),除非你使用nathantreid:blaze-modules

至于$ is not defined:此代码在服务器上运行(server/main.js),没有jQuery。

+0

它显示了同样的错误,更多“警告:试图加载角度不止一次。” –