我想通过我的承诺传递一些简单的布尔值和字符串值。下面是该方法在视图中renedering的一个模式:在承诺控制器之间传递数据Angularjs
$scope.openHjelpModal = function (field) {
var modalInstance = $uibModal.open({
animation: true,
templateUrl: 'app/produkt/ny/views/hjelpModal.html',
controller: 'hjelpModalController',
});
modalInstance.result.then(function (field) {
var kategori = '';
var pakning = false;
var epd = false;
var lansering = false;
switch (field) {
case 'p':
console.log('pakningsoppbyggning rendering');
pakning = true;
epd = false;
lansering = false;
kategori = 'pakningsoppbyggning';
break;
case 'e':
console.log('epd-kategori rendering');
pakning = false;
epd = true;
lansering = false;
kategori = 'EPD-kategori';
break;
case 'l':
console.log('lansering rendereing');
pakning = false;
epd = false;
lansering = true;
kategori = 'lansering';
break;
}
}, function() {
//logService.info('Modal dismissed at: ' + new Date());
});
};
我需要在布尔和字符串传递给模态莫名其妙。我知道推荐的方法将是一项服务,但我迄今尚未能够遵循此处提供的任何解决方案。
这里是我将使用变量的模态(HTML文件):
<h4>Hjelp for: {{kategori}} </h4>
<div ng-if="lansering">
<p> kommer fra lansering</p>
</div>
<div ng-if="epd">
<p> kommer fra epd</p>
</div>
<div ng-if="pakning">
<p> kommer fra pakning</p>
</div>
<div class="modal-footer">
<button class="btn btn-green pull-left" type="button" ng-click="lukk();">Lukk</button>
</div>
运行控制台日志从hjelpModalController返回undefined,这是一个在答案中提供的变化:
$scope.openHjelpModal = function (field) {
var modalInstance = $uibModal.open({
animation: true,
templateUrl: 'app/produkt/ny/views/hjelpModal.html',
controller: 'hjelpModalController',
resolve: function() {
return field;
}
});
console.log(field); // works here
}
而且从hjelpModalController:
angular.module('app').controller('hjelpModalController', hjelpModalController);
hjelpModalController.$inject = ['$scope','$uibModalInstance'];
function hjelpModalController($scope, $uibModalInstance, field) {
console.log(field); // returns undefined
}
更新:
这里是我所做的最新进展:
控制器传递变量:
$scope.openHjelpModal = function (field) {
var modalInstance = $uibModal.open({
animation: true,
templateUrl: 'app/produkt/ny/views/hjelpModal.html',
controller: 'hjelpModalController',
resolve: {
selectedHelpModal: function() {
console.log(field); // correct output
return field;
}
}
});
modalInstance.result.then(function() {
console.log('or here');
console.log(field); // correct output
});
}
控制器recieving变量:
angular.module('app').controller('hjelpModalController', hjelpModalController);
hjelpModalController.$inject = ['$scope','$uibModalInstance'];
function hjelpModalController($scope, $uibModalInstance, field) {
console.log('hjelp modal controler is running');
console.log(field); // undefined
}
运行您的解决方案将返回以下控制台输出:未捕获SyntaxError:在严格模式代码中,函数只能在顶层或块内声明。 – Steingrrim
@Steingrrim对不起,解决应该是一个对象而不是功能 – Icycool
有了一些小的变化,你的答案解决了我的问题。谢谢你,先生。 – Steingrrim