我正在尝试将我的控制器分成多个文件,但是当我尝试在我的模块中注册它时我得到一个错误:
groupcontroller.coffee
app = angular.module('WebChat', []);
app.controller 'GroupController', ($scope) ->
Run Code Online (Sandbox Code Playgroud)
usercontroller.coffee
app = angular.module('WebChat', []);
app.controller 'UserController', ($scope) ->
Run Code Online (Sandbox Code Playgroud)
错误
错误:参数'GroupController'不是函数,未定义
从文档中我还没有真正得到模块方法所做的事情.它是否用"网聊"键存储我的控制器?
编辑: 似乎传递[]创建一个新模块并覆盖前一个模块
app = angular.module('WebChat', []);
Run Code Online (Sandbox Code Playgroud)
为了防止这种情况,你必须省略[]之类的
app = angular.module('WebChat');
Run Code Online (Sandbox Code Playgroud) 我的Angular应用程序有许多模态,我有AngularUI来提供模态指令.
http://angular-ui.github.io/bootstrap/
到目前为止,我有几个主控制器,这些都在app.js文件中作为路由.
$routeProvider.when '/dashboard', templateUrl: '/templates/dashboard/dashboard.html', controller: 'DashboardController'
$routeProvider.when '/dataset/:panel_id', templateUrl: '/templates/dataset/dataset.html', controller: 'DatasetController'
$routeProvider.when '/batches/:panel_id', templateUrl: '/templates/design/design.html', controller: 'PanelController'
Run Code Online (Sandbox Code Playgroud)
这很好用.
然后我创建了一个调用模态的函数,而modal有一个ConfigureModalCtrl的实例控制器.我最初在调用控制器文件的底部有这个,它工作正常.
$scope.invokeConfigureModal = (assay_id) ->
$scope.assay_id = assay_id
$scope.primer3 = $scope.getPrimer(assay_id)
modalInstance = $modal.open(
templateUrl: '/templates/configure_modal/configure_modal.html'
controller: ConfigureModalCtrl
windowClass: 'configure-dialog'
resolve:
primer3: ->
$scope.primer3
)
modalInstance.result.then ((primer3) ->
$scope.primer3 = primer3
return
), ->
return
Run Code Online (Sandbox Code Playgroud)
现在我已将模态实例控制器移动到它自己的文件中,但调用函数找不到它.
angular.module('assaypipelineApp').controller "ConfigureModalCtrl", ($scope, $modalInstance, primer3) ->
$scope.primer3 = primer3['data']
$scope.ok = ->
$modalInstance.close $scope.primer3
return
$scope.cancel = ->
$modalInstance.dismiss "cancel" …Run Code Online (Sandbox Code Playgroud) 我尝试这个解决方案
然后我收到了这个错误
获取http:// localhost:8000/js/TaskController.js net :: ERR_ABORTED 404(未找到)
然后我检查这个解决方案
https://github.com/angular/angular-cli/issues/8371
我的问题:我有一个Laravel和角度应用程序工作正常,但我想App.js通过将控制器分离到不同的文件使文件更清洁,我尝试了一些解决方案,我认为他们不适用于Laravel.
app.js
var app = angular.module('LaravelCRUD', []
, ['$httpProvider', function ($httpProvider) {
$httpProvider.defaults.headers.post['X-CSRF-TOKEN'] = $('meta[name=csrf-token]').attr('content');
}]);
app.controller('StudentController', ['$scope', '$http', function ($scope, $http) {
//Some code here that works fine
}]);
Run Code Online (Sandbox Code Playgroud)
我也app.blade.php像这样更新我的文件
//somecodes
<!-- Scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<script src="{{ asset('js/TaskController.js') }}" defer></script>
//somecodes
Run Code Online (Sandbox Code Playgroud)
我想创建一个StudentController.js包含此控制器代码的文件.
我使用这些版本
Angular CLI: 6.1.4
Node: 8.11.4
OS: win32 x64
Angular: undefined
...
Package Version …Run Code Online (Sandbox Code Playgroud) 我有一个globale routes控制器,并希望为每个页面模板创建一个额外的控制器.
它完成如下:
var app = angular.module('myapp', ['ngSanitize', 'ngRoute']);
app.config(function($routeProvider){
$routeProvider
.when("/test", {
templateUrl: "./templates/test.html",
controller: "testController"
})
});
app.controller('test', function() {
//...
});
Run Code Online (Sandbox Code Playgroud)
问题:如何将控制器移动到自己的testController.js文件中?我试过了,但是控制器不再工作了.
如果我在自己的文件中提取控制器,我必须采取哪些步骤?
var app从testController.js中访问模块变量?<script src="js/testController.js"></script>标签条目包含在我的html模板中?这将是麻烦的,因为我想将我的应用程序分成许多控制器,这将导致许多导入.我正在使用Yeoman在Angular中构建练习应用程序.我正在尝试将控制器保存在单独的文件中.
但是,当进入我的"注册"路线时,它会在Chrome开发工具中引发错误:
"Error: [ng:areq] Argument 'RegisterCtrl' is not a function, got undefined
http://errors.angularjs.org/1.2.6/ng/areq?p0=RegisterCtrl&p1=not%20aNaNunction%2C%20got%20undefined".
即使它抛出错误,我仍然可以访问注册页面并查看"hello world"内容.
我看过:
但是,尽管尝试了一些他们的建议,但都没有帮助解决我的问题
目前,我的应用程序布局为:
app
...
--scripts
---controllers
-----main.js
-----register.js
---app.js
...
Run Code Online (Sandbox Code Playgroud)
当我将register.js的内容移动到Main.js时,它不再抛出错误.
App.js看起来像这样:
angular.module('angYeomanApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'ui.bootstrap'
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.when('/register', {
templateUrl: 'views/register.html',
controller: 'RegisterCtrl'
})
.otherwise({
redirectTo: '/'
});
});
Run Code Online (Sandbox Code Playgroud)
Main.js:
angular.module('angYeomanApp')
.controller('MainCtrl', function ($scope) {
});
Run Code Online (Sandbox Code Playgroud)
Register.js:
angular.module('angYeomanApp')
.controller("RegisterCtrl", function ($scope) {
});
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激!
angularjs ×5
angular ×1
angular-ui ×1
coffeescript ×1
html ×1
javascript ×1
laravel ×1
laravel-5.7 ×1
php ×1
yeoman ×1