Javascript 为什么我没有定义不是一个函数?
我正在尝试使用angular UI pop-over制作popover。我加载html并编译该html,但当我运行程序并单击图标时,我正在显示pop-over的星形图标,我发现错误未定义不是一个函数吗 我用了这些台词Javascript 为什么我没有定义不是一个函数?,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我正在尝试使用angular UI pop-over制作popover。我加载html并编译该html,但当我运行程序并单击图标时,我正在显示pop-over的星形图标,我发现错误未定义不是一个函数吗 我用了这些台词 <td ><span pop-over items="items", title="Mode of transport" class="glyphicon glyphicon-star content"></span> </t
<td ><span pop-over items="items", title="Mode of transport" class="glyphicon glyphicon-star content"></span> </td>
app.directive('popOver', function ($compile) {
var itemsTemplate ="<div ng-controller='AfterCtrl'><ul class='list-group'><li class='list-group-item' ng-click='editRowName()'>Edit</li><li class='list-group-item ' ng-click='deleteRow($index)'>Delete</li></ul></div>" ;
var getTemplate = function (contentType) {
var template = '';
switch (contentType) {
case 'items':
template = itemsTemplate;
break;
}
return template;
}
return {
restrict: "A",
transclude: true,
template: "<span ng-transclude></span>",
link: function (scope, element, attrs) {
var popOverContent;
if (scope.items) {
var html = getTemplate("items");
popOverContent = $compile(html)(scope);
}
var options = {
content: popOverContent,
placement: "bottom",
html: true,
title: "aa"
};
$(element).popover(options);
},
scope: {
items: '=',
title: '@'
}
};
});
第一个问题是由于您在底部再次导入jQuery,其他人已经提到了这一点。 因此,删除最后一个jQuery导入 主要的问题是scope.items是未定义的,因此您永远不会进入if,因此popOverContent仍然是未定义的。 您可能打算使用:
...
$scope: {
items: '@',
...
}
再看这个
与这个问题没有直接关系,但下面是popOver指令的一个示例。我对它做了一些修改,使其能够在尽可能少的修改下工作,例如,它不再具有隔离作用域,不再使用固定模板等。
按钮按预期工作。
在pop.js中双重导入jqueryLine 49是您的问题$element.popoveroptions;爆米花也许应该是爆米花?或者别的什么。。你想用这一行做什么?你的popover功能在哪里?它是内部函数bootstap当我删除jquery时,它显示标题但不是HTML竞争编辑或删除你能不能提供更多信息我将如何使用popover选项编辑行名并删除行。如果你选中“编辑”和“删除”按钮。它工作正常,但我需要对popover选项执行相同操作以编辑行名和删除行如果您知道如何编辑行名和删除行的任何信息,请使用plunker发布该anser,我将接受您的anser popover内容包含带有editRowName和deleteRow的ngClicks,但是作用域上没有这样的函数,因为它是一个隔离作用域。您可以通过属性和&绑定将函数传递给隔离作用域。仔细看一看这张照片。