【发布时间】:2019-01-23 18:28:51
【问题描述】:
我在一个单独的文件中创建了一个自定义 angularjs 控制器,调用者也在一个单独的文件中。但由于某种原因,angularjs 给出了错误控制器未定义。以下是文件:
test_ctrl.js:
function test_ctrl($scope, $rootScope, apiSrvc, $mdDialog) {
$scope.hide = function() {$mdDialog.hide();};
$scope.cancel = function() {$mdDialog.cancel();};
}
index.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')。控制器文件的位置有参数吗?
【问题讨论】:
-
您是否将控制器置于全局范围内?还是您将其包含在一个模块中?
-
@georgeawg 我将控制器放在外部文件中,并让 openModal 角度方法调用它。有没有办法在 openModal 参数中定义控制器文件的位置?
标签: javascript angularjs twitter-bootstrap angularjs-controller