專案中在factory中編寫模態彈出框元件,之前只是簡單的實作彈出,關閉功能。現在新增了ng-click事件去請求數據,
`//這裡定義了一些模態框簡單的事件函數就不一一舉出了
......
getTpl = function(name){
switch(name){
case"unbindMemCard":
tpl='<p class="vip-card-dialog">'+
'<p class="vip-card-dialog-bd">'+
'<p>确定解绑会员卡号{{currentCard.mcCode}}下的黄金会员卡消费项目。</p>'+
'<p>解绑后的消费项目可到场馆前台进行重新绑定。</p>'+
'</p>'+
'<p class="vip-card-dialog-ft">'+
'<a href="javascript:void(0);" class="vip-card-btn-dialog cancel my_default">取消</a>'+
'<a href="javascript:void(0);" ng-click="unbindMember()" class="vip-card-btn-dialog ok my_primary">确定</a>'+
'</p>'+
' </p>';
break;
default :
return;
}
return tpl;
};`
return {
unbindMemCard:function(){
var tpl=getTpl('unbindMemCard');
addAlertify(tpl);//弹出模态框
//关闭模态框
var my_default = document.getElementsByClassName("my_default")[0];
my_default.addEventListener("click",defaultFun,false);
},
}`
dialogService.unbindMemCard();//弹出模态弹出框
$scope.unbindMember=function(){
//解绑函数
......
}
确定按钮上的ng-click函数原本是在解绑会员卡整个页面上的,现在把这个点击事件迁移到模态弹出框中去了,我发现触发不了。也就是解绑页面加载了html模板,当前整个页面里面$scope.unbindMember仍然取不到tpl,里面的ng-click="unbindMember()".
应该如何解决?
我的思路:1、在factory里面另起一个方法去请求接口;
2、把ng-click=unbindMember()变得能让解绑页面获取到
某草草2017-05-15 17:08:20
首先聲明,我是 粗暴的 野生程式設計師,可能我的方法不好。
如果讓我來實現,我覺得這個場景適合 用 directive 來實現。
//当前控制器:
$scope.XXX : {
success : function(){
},
canel : function(){
}
}
<model-box mb-data="XXX"></model-box>
彈出/關閉 啥的,在 directive 的 控制器裡寫。
最後安麗下我的 分頁程序,按 社區 里大神的寫法,要寫到 服務裡,我卻用 directive 造了個輪子:http://www.miaoqiyuan.cn/p/an...
过去多啦不再A梦2017-05-15 17:08:20
促發不了 是因為ng-click
在当前的scope里找不到unbindMember()
,這個scope不是你controller裡面那個scope了,甚至可能不存在~
這裡涉及到對Dom的操作,所以把這一部分還是寫到directive裡面