【发布时间】:2014-02-17 05:17:19
【问题描述】:
我有一个 Angular 指令来处理 Bootstrap 弹出框,如下面的代码所示。在我的指令中,我将弹出框内容设置为 HTML 字符串,我认为这很难看。 我想做的是使用“template.html”文件而不是 HTMLstring。通过这种方式,我将能够对不同的模板文件使用相同的指令,具体取决于我想要显示的弹出框类型。反正这是我的计划。
那么,如何以最佳方式从我的 template.html 加载 html 代码并使用它而不是下面 AngularJs 指令中的 HTMLstring?
app.directive('mypopover', function ($compile) {
var HTMLstring = "<div><label class='control-label' style='color: rgb(153, 153,153)'>Search</label> "+"<input placeholder='Search assignment' ng-model='searchText' type='text' class='form-control'> <br>"+"<label class='control-label' style='color: rgb(153, 153, 153)'>Select an assignable</label>"+"<p ng-repeat='p in projects | filter:searchText'ng-click='createEvent(user.id,date)'>"+"{{p.title}}</p></div>";
var getTemplate = function (contentType) {
var template = '';
switch (contentType) {
case 'user':
template = HTMLstring;
break;
}
return template;
}
return {
restrict: "A",
link: function (scope, element, attrs) {
var popOverContent;
if (scope.user) {
var html = getTemplate("user");
popOverContent = $compile(html)(scope);
}
var options = {
content: popOverContent,
placement: "right",
html: true,
date: scope.date
};
$(element).popover(options);
},
scope: {
user: '=',
date: '='
}
};
});
【问题讨论】:
标签: javascript html angularjs twitter-bootstrap popover