我是AngularJS的新手,我在http://angular-ui.github.io/bootstrap/上创建了一个模态,只需点击一下按钮即可打开。但是,我还希望它在页面加载时直接打开,因为需要在模态中输入一些关键设置。为此,我在控制器初始化时直接调用open函数,我想知道这是好事还是坏事,因为我似乎无法找到更好的解决方案。
这是我的Javascript代码:
angular.module('myApp', ['ui.bootstrap'])
.controller('NavBarCtrl', ['$scope', '$modal', function($scope, $modal) {
$scope.openSettings = function() {
var settingsInstance = $modal.open({
templateUrl: 'settingsTemplate',
controller: 'SettingsInstanceCtrl',
scope: $scope
});
}
$scope.reset = function() {
alert('Not implemented yet');
};
$scope.openSettings();
}])
.controller('SettingsInstanceCtrl', ['$scope', '$modalInstance', function($scope, $modalInstance) {
$scope.closeSettings = function() {
$modalInstance.dismiss('closed');
}
$scope.saveSettings = function() {
//save
$modalInstance.dismiss('saved');
}
}]);
正如您在代码中看到的那样,当设置$ scope时,会立即调用控制器范围的closeSettings函数。任何反馈都会受到欢迎。
非常感谢!
答案 0 :(得分:1)
这实际上取决于您是否希望在没有此行为的情况下在另一个视图/应用程序中重用此控制器:
是:您可以使用嵌套元素,例如
<span ng-init="openSettings()">
将调用控制器操作,或直接在同一元素上使用ng-init。
否:嗯,如果这是控制器工作的标准方式,我会一直这样做。
关于最佳做法,我建议将控制器拆分为单独的文件 如果你的应用变得更大,那么SettingsInstanceCtrl.js,NavBarCtrl.js。