将数据从 javascript 传递到 bootstrap 模态
pass data to bootstrap modal from javascript
我的项目基于 angular 并且作为简化,单击按钮时将显示模式弹出窗口。现在我需要将数据从 javascript.
传递到模态主体
我知道使用带有按钮的内联编码传递数据,但不是这种情况。我需要它从js文件传递的内容。
内容不是 ajax 调用。只需将文本从 controllerjs 传递到模态即可。
这是JSFIDDLE
var myApp = angular.module("popupApp",[]);
myApp.controller("myController",function($scope){
$scope.popup = function(){
angular.element("#myModal").modal({
show:true,
contentForModalBody:"I am from the controller"
});
}
angular.element('#myModal').on('show.bs.modal', function (event) {
console.log(event);
console.log("I am initiated");
//How do i get contentForModalBody here?
});
});
您需要做的就是在控制器端使用 $modal 服务,在模态控制器端使用 $modalInstance。 'Resolve' 部分正是您所需要的 - 它是您将一些数据传递给模态的方式。
举个例子:
var modalInstance = $modal.open({
templateUrl: 'some/modal.html',
controller: 'ModalInstanceCtrl',
size: 'lg',
resolve: {
item: function () {
return "Something you want to pass in";
}
}
});
// Here the part when you access data after closing the modal (clicking either Ok or Cancel).
modalInstance.result.then(function (item) {
$scope.confirm(item);
}, function (item) {
$scope.reject(item);
});
ModalInstanceController(您通过从控制器中的解析部分注入 'item' 来捕获数据):
controller('ModalInstanceCtrl', function ($scope, $modalInstance, item) {
$scope.item = item;
//example implementation of 'Ok' button.
$scope.ok = function () {
$modalInstance.close($scope.item);
};
// example implementation of Cancel button.
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
当然
templateUrl: 'some/modal.html'
它是您的模式 html 文件的路径。
有一种内联传递内容的方法,但在您的情况下,您不想内联传递数据。所以以this代码为例。首先,您需要使用 angular 方式将数据传递给模态,然后您可以从任何地方获取数据。在这种情况下,您的控制器的功能将如下所示。
$scope.popup = function(){
angular.element(document.querySelector("#myModal .modal-body")).html("Content for the modal body");
angular.element(document.querySelector("#myModal")).modal({
show:true,
});
}
您可以从任何 javasript 或控制器变量传递模态内容。您只需要替换变量中的内容。喜欢
$scope.modalContent = "Content for the modal body";
angular.element(document.querySelector("#myModal .modal-body")).html($scope.modalContent);
我的项目基于 angular 并且作为简化,单击按钮时将显示模式弹出窗口。现在我需要将数据从 javascript.
传递到模态主体我知道使用带有按钮的内联编码传递数据,但不是这种情况。我需要它从js文件传递的内容。
内容不是 ajax 调用。只需将文本从 controllerjs 传递到模态即可。
这是JSFIDDLE
var myApp = angular.module("popupApp",[]);
myApp.controller("myController",function($scope){
$scope.popup = function(){
angular.element("#myModal").modal({
show:true,
contentForModalBody:"I am from the controller"
});
}
angular.element('#myModal').on('show.bs.modal', function (event) {
console.log(event);
console.log("I am initiated");
//How do i get contentForModalBody here?
});
});
您需要做的就是在控制器端使用 $modal 服务,在模态控制器端使用 $modalInstance。 'Resolve' 部分正是您所需要的 - 它是您将一些数据传递给模态的方式。
举个例子:
var modalInstance = $modal.open({
templateUrl: 'some/modal.html',
controller: 'ModalInstanceCtrl',
size: 'lg',
resolve: {
item: function () {
return "Something you want to pass in";
}
}
});
// Here the part when you access data after closing the modal (clicking either Ok or Cancel).
modalInstance.result.then(function (item) {
$scope.confirm(item);
}, function (item) {
$scope.reject(item);
});
ModalInstanceController(您通过从控制器中的解析部分注入 'item' 来捕获数据):
controller('ModalInstanceCtrl', function ($scope, $modalInstance, item) {
$scope.item = item;
//example implementation of 'Ok' button.
$scope.ok = function () {
$modalInstance.close($scope.item);
};
// example implementation of Cancel button.
$scope.cancel = function () {
$modalInstance.dismiss('cancel');
};
});
当然
templateUrl: 'some/modal.html'
它是您的模式 html 文件的路径。
有一种内联传递内容的方法,但在您的情况下,您不想内联传递数据。所以以this代码为例。首先,您需要使用 angular 方式将数据传递给模态,然后您可以从任何地方获取数据。在这种情况下,您的控制器的功能将如下所示。
$scope.popup = function(){
angular.element(document.querySelector("#myModal .modal-body")).html("Content for the modal body");
angular.element(document.querySelector("#myModal")).modal({
show:true,
});
}
您可以从任何 javasript 或控制器变量传递模态内容。您只需要替换变量中的内容。喜欢
$scope.modalContent = "Content for the modal body";
angular.element(document.querySelector("#myModal .modal-body")).html($scope.modalContent);