我正在使用modalService在我的mainController中存储模态模板。
以下是我存储它们的方法(来自mainController)
// Store popup modal:
$ionicModal.fromTemplateUrl('app/popup/popup.html', {})
.then(function(modal) {
PopupFactory.storeModal(modal);
});
// Store addTicker modal:
$ionicModal.fromTemplateUrl('app/tickers/addTicker.html', {})
.then(function(modal) {
ModalFactory.storeModal('addTicker', modal);
});
这就是storeModal
函数的样子:
function storeModal(type, modal) {
switch(type) {
case 'addTicker':
vm.addTicker = modal;
break;
case 'addTag':
vm.addTag = modal;
break;
}
}
^你可以看到我必须为我的应用程序将拥有的每个模态创建一个对象。
这就是getModal函数的样子:
function getModal(type) {
switch(type) {
case 'addTicker':
return vm.addTicker;
break;
case 'addTag':
return vm.addTag;
break;
case 'anotherModal':
return vm.anotherModal;
break;
case 'yetAnotherModal':
return vm.yetAnotherModal;
break;
}
}
我觉得这段代码可以优化为1或2行...
我试过以下无效:
function getModal(type) {
return vm.+type;
}
和
function getModal(type) {
var returned = type;
return vm.returned;
}
但是,当我在各自的指令控制器中调用getModal时,我得到了未定义:
function addTickerButton() {
vs.addTicker = ModalFactory.getModal('addTicker');
vs.addTicker.show('addTicker);
$rootScope.$emit("modal.add.tickers");
}
答案 0 :(得分:1)
只做
function getModal(type) {
return vm[type];
}
答案 1 :(得分:1)
答案 2 :(得分:1)
你离这儿很近:
function getModal(type) {
var returned = type;
return vm.returned;
}
但您尝试访问returned
上的vm
属性,该属性不存在。要使用变量检索属性,必须使用括号表示法:
function getModal(type) {
return vm[type];
}