【发布时间】:2015-08-13 21:14:51
【问题描述】:
我使用 angular 指令为复选框单击创建了一个弹出框。它工作得很好,但关闭按钮确实有效。这是我的示例代码。
myApp.directive('mypopover', function ($compile,$templateCache,$interpolate) {
var getTemplate = function (contentType,attrs) {
var template = '';
switch (contentType) {
case 'comment':
var template = "<div class=''>";
template += "<form><div class='form-group'>";
template += "<input type='hidden' value='"+attrs.value+"' name='documentationId' id='documentationId' />";
template += "<textarea style='width:250px;' class='form-control' name='doc_comment' id='doc_comment'>Selected for Re-Use in 2nd Trade Workflow.</textarea>";
template += "</div>";
template += "<div class='form-group'>";
template += "<input type='button' value='Close' class='btn btn-primary btn-xs' ng-click=\"closePopover()\" />";
template += "<input type='button' value='Comment' class='btn btn-primary btn-xs pull-right' />";
template += "</div></form><br>";
template += "</div>";
break;
}
return template;
}
return {
restrict: "EA",
link: function (scope, element, attrs) {
var popOverContent;
var d = new Date();
var mm = d.getMonth()+1;
popOverContent = getTemplate("comment",attrs);
var options = {
content: popOverContent,
placement: "right",
html: true,
date: scope.date,
title:"Date: "+mm+"/"+d.getDate()+"/"+d.getFullYear()
};
$(element).popover(options);
scope.closePopover = function() { //this block doesn't work
alert("called"); //does not return alert
}
}
};
});
其中的html部分是
<div class="checkbox checkbox-primary">
<input
type='checkbox'
ng-model='selectedDocIds'
mypopover
/>
</div>
我尝试将 ng-click='closePopover()' 函数绑定到此 html 的主控制器,但它不起作用。我没有收到错误,但只是发生了任何事情。
有人可以帮我让这个 ng-click 事件发生吗?
谢谢
【问题讨论】:
-
我有一个精简的版本工作正常:plnkr.co/edit/Qlvdzy?p=info 还不确定弹出窗口中的范围问题是什么
-
@wesww,我必须对从
getTemplate()返回的模板执行$compile才能使其正常工作。它在我的 plunker 中工作但我遇到了下一个问题,下次打开弹出框时取消选中复选框。不同之处在于,当通过单击close按钮关闭弹出框时,我取消选中该复选框。看我的例子here -
当前有一个支持动态弹出框的线程,您应该在这里查看github.com/angular-ui/bootstrap/issues/…
标签: angularjs twitter-bootstrap angular-ui popover