javascript - 为什么angular js找不到自定义控制器
问题描述
我在一个单独的文件中创建了一个自定义 angularjs 控制器,调用者也在一个单独的文件中。但由于某种原因,angularjs 给出了错误控制器未定义。以下是文件:
test_ctrl.js:
function test_ctrl($scope, $rootScope, apiSrvc, $mdDialog) {
$scope.hide = function() {$mdDialog.hide();};
$scope.cancel = function() {$mdDialog.cancel();};
}
索引.html:
<button id="testbutton" ng-click="openModal($event)">open modal</button>
index.js:
// Open the Modal //
$scope.openModal = function(ev) {
$mdDialog.show({
controller: test_ctrl,
templateUrl: '/views/testview/testmodal.html',
parent: angular.element($('.some_parent_class')),
targetEvent: ev,
clickOutsideToClose:true,
locals: {},
onRemoving: function (event, removePromise) {
}
});
};
//*/
});
testmodal.html:
<md-dialog>
<md-dialog-content>
testing content
</md-dialog-content>
<md-dialog-actions layout="row">
<md-button ng-click="cancel()">Close</md-button>
</md-dialog-actions>
</md-dialog>
好的总结一下这个过程,index.html 中的按钮是用来打开一个角度模态对话框的。因此,对于 index.html 中的按钮,我包含了“ng-click="openModal($event)" 来触发角度事件以打开角度模态。我不知道我错过了什么或做错了什么,但在控制台中单击按钮时,我得到““test_ctrl”未在角度中定义...“错误。我做错了什么?
编辑 好的另一种解决方法是将控制器定义函数包含在与 index.js 相同的文件中,但我真的很想在 openModal 参数中包含外部控制器文件的位置,就像使用模态模板位置一样(模板网址:'/views/testview/testmodal.html')。控制器文件的位置是否有参数?
解决方案
控制器函数定义需要在index.js
加载之前定义,所以在 index.html 中需要加载test_ctrl.js
before index.js
。
更简洁的替代方法是将控制器功能导入index.js
.
推荐阅读
- python - 即使满足条件,显示消息语句也不会打印,我有点卡在这个上
- asp.net-core - 将 API 添加到现有 ASP.Net Core 2.2 MVC 解决方案的良好架构是什么
- python - 硒刮问题 | 拆分文本块以列出
- javascript - 如何设计和实现包含掩码的表单(类似于位掩码,但非二进制)?
- android - 在 Cmdline-tools 中找不到预制双簧管 REQUIRED CONFIG(版本 6858069)
- android-studio - 在 Kotlin 中构建失败并出现异常错误
- windows-10 - 如何使用免费工具集创建 MSI 安装程序以进行静默安装
- jenkins - 如何将 REST API 与指向共享库的 Jenkinsfile 一起使用?
- c++ - 改变
/ 的对比 - python - python scrapy从产品页面获取url列表