【发布时间】:2015-12-04 13:52:14
【问题描述】:
我有一个带有按钮打开模式“new_project_modal.html”的 uibootstrap 手风琴“angular_accordion.html”,在模式中输入的值显示在 twitter bootstrap 面板中的视图“angular_tabel.html”中,带有一个打开相同模式的按钮“ new_project_modal.html”,我想在输入字段中显示值以便用户可以编辑,但值在控制器“modal_new_project.js”的范围内不可用。
我不明白的另一件事是,在“new_project_modal.html”中,ng-controller="ModalDemoCtrl as modalScope",我必须使用 ng-model="modalScope.name",ng-model="name" 不起作用,没有数据绑定,控制器中没有范围,为什么?当它在其他视图中像 ng-model="something" 一样工作而不需要“modalScope”时?
AngularJS:1.4.7
用户界面引导:0.14.3
angular_accordion.html:
<div ng-controller="UibAccordionCtrl">
......
.....
<div ng-controller="ModalDemoCtrl">
<a href="#" id="project-popover" class="btn btn-default center-block" ng-click="open()"><i class="fa fa-bar-chart-o pull-left" id="test1"></i>Create Project</a>
</div>
............
.......
</div>
angular_tabel.html:
<div ng-controller="TabsCtrl as tabsController">
.........
<div class="panel panel-default" id="outer-panel" ng-repeat="panel in panels">
.............
............
.........
<div ng-controller="ModalDemoCtrl">
<button class="btn btn-default" ng-click="editProject(panel.name)"><i class="fa fa-edit"></i></button>
</div>
........
.......
</div>
new_project_modal.html:
<div ng-controller="ModalDemoCtrl as modalScope">
...............
.............
<form class="form-horizontal">
...........
<input type="text" class="form-control" id="userName" placeholder="Name" ng-model="modalScope.name">
.......
</form>
<div class="modal-footer">
<button class="btn btn-primary" ng-click="ok(modalScope.name)">Create</button>
<button class="btn btn-warning" ng-click="cancel()">Cancel</button>
</div>
</div>
modal_new_project.js:
var app = angular.module('modalNewProjectModule', ['ui.bootstrap']);
app.controller('ModalDemoCtrl', function ($scope, $uibModal, $log) {
$scope.open = function () {
var modalInstance = $uibModal.open({
templateUrl: 'partials/new_project_modal.html',
controller: 'ModalInstanceCtrl',
scope: $scope,
windowClass: 'test-modal-width',
backdrop: false,
resolve: {
projectName: function () {
return $scope.name;
}
}
});
};
$scope.editProject = function (name) {
var modalInstance = $uibModal.open({
templateUrl: 'partials/new_project_modal.html',
controller: 'EditModalInstanceCtrl',
scope: $scope,
windowClass: 'test-modal-width',
backdrop: false,
resolve: {
projectName: function(){
return name;
}
}
});
};
});
app.controller('ModalInstanceCtrl', function ($scope, $uibModalInstance, projectName, NewProjectService) {
$scope.ok = function(projectName) {
var new_project_params = {
'name': projectName,
'status': 'Status New'
};
NewProjectService.setValue(new_project_params);
$uibModalInstance.close();
};
$scope.cancel = function () {
$uibModalInstance.dismiss('cancel');
};
});
app.controller('EditModalInstanceCtrl', function ($scope, $uibModalInstance, projectName, NewProjectService) {
$scope.name = projectName; //undefined
$scope.ok = function(project) {
var new_project_params = {
'name': projectName,
'status': 'Status New'
};
NewProjectService.setValue(new_project_params);
$uibModalInstance.close();
};
$scope.cancel = function () {
$uibModalInstance.dismiss('cancel');
};
});
【问题讨论】:
标签: javascript angularjs angularjs-scope angular-ui-bootstrap