我如何将更改数据传递到模态?
How do i pass changing data into a modal?
我正在尝试将一个不断变化的范围变量传递给模态 window。一旦模式打开,我就无法允许变量更改。目前,当模式打开时,我将数据传递给控制器:
scope.open = function (roomname, image) {
console.log("clicked modal");
console.log("roomName: " + roomname);
console.log("image: " + image);
scope.imageContents = image;
console.log("scope.imageContents: " + scope.imageContents);
scope.modalInstance = $modal.open({
animation: scope.animationsEnabled,
templateUrl: 'tpl/modal-template.tpl.html',
controller: 'ModalInstanceCtrl',
resolve: {
items: function () {
console.log("scope.imageContents in resolve: " + scope.imageContents);
return scope.imageContents;
},
compassHeading: function () {
console.log("scope.imageContents in resolve: " + scope.compassHeading);
return scope.compassHeading;
}
}
});
};
和我的控制器:
angular.module('TestApp').controller('ModalInstanceCtrl',function ($scope, $modalInstance, items, compassHeading) {
'use strict';
$scope.items = items;
$scope.selected = {
item: $scope.items
};
$scope.compassHeading = compassHeading;
});
罗盘航向变量不断更新,所以我试图获取罗盘航向变量以在模态中显示这些变化。
您可以使用包含您的变量和其他变量的服务:
angular.module('TestApp')
.service('TestService', [function () {
return {
model: {
'compassHeading': null
}
};
}]);
在你的主控制器中,你可以像这样使用它:
angular.module('TestApp')
.controller('MainController', ['$scope', 'TestService', function ($scope, testService) {
$scope.model = testService.model;
...
}]);
在您的 $modal
控制器中,您也可以这样做:
angular.module('TestApp')
.controller('ModalInstanceCtrl', ['$scope', 'TestService', function ($scope, testService) {
$scope.model = testService.model;
}]);
然后,任何时候需要更改 compassHeading
的值,您都可以使用正常的方式更改它:$scope.model.compassHeading = <some_value_here>;
.
此外,compassHeading
的值,如果在控制器外部更改,也会在控制器内部更改,因为服务的 model
对象是通过引用调用的。
我正在尝试将一个不断变化的范围变量传递给模态 window。一旦模式打开,我就无法允许变量更改。目前,当模式打开时,我将数据传递给控制器:
scope.open = function (roomname, image) {
console.log("clicked modal");
console.log("roomName: " + roomname);
console.log("image: " + image);
scope.imageContents = image;
console.log("scope.imageContents: " + scope.imageContents);
scope.modalInstance = $modal.open({
animation: scope.animationsEnabled,
templateUrl: 'tpl/modal-template.tpl.html',
controller: 'ModalInstanceCtrl',
resolve: {
items: function () {
console.log("scope.imageContents in resolve: " + scope.imageContents);
return scope.imageContents;
},
compassHeading: function () {
console.log("scope.imageContents in resolve: " + scope.compassHeading);
return scope.compassHeading;
}
}
});
};
和我的控制器:
angular.module('TestApp').controller('ModalInstanceCtrl',function ($scope, $modalInstance, items, compassHeading) {
'use strict';
$scope.items = items;
$scope.selected = {
item: $scope.items
};
$scope.compassHeading = compassHeading;
});
罗盘航向变量不断更新,所以我试图获取罗盘航向变量以在模态中显示这些变化。
您可以使用包含您的变量和其他变量的服务:
angular.module('TestApp')
.service('TestService', [function () {
return {
model: {
'compassHeading': null
}
};
}]);
在你的主控制器中,你可以像这样使用它:
angular.module('TestApp')
.controller('MainController', ['$scope', 'TestService', function ($scope, testService) {
$scope.model = testService.model;
...
}]);
在您的 $modal
控制器中,您也可以这样做:
angular.module('TestApp')
.controller('ModalInstanceCtrl', ['$scope', 'TestService', function ($scope, testService) {
$scope.model = testService.model;
}]);
然后,任何时候需要更改 compassHeading
的值,您都可以使用正常的方式更改它:$scope.model.compassHeading = <some_value_here>;
.
此外,compassHeading
的值,如果在控制器外部更改,也会在控制器内部更改,因为服务的 model
对象是通过引用调用的。