【问题标题】:why i am getting undefined is not a function?为什么我得到未定义不是一个函数?
【发布时间】:2014-08-08 12:12:23
【问题描述】:

我正在尝试使用 angular UI pop over 来制作弹出框。我加载了我的 html 并编译了该 HTml,但是当我运行我的程序并单击 ICon(我显示弹出框的星形图标)时,我收到错误 undefined is not a功能?

http://plnkr.co/edit/o0mVZujOH0Apqurvq9xX?p=preview

我使用了这些行

     <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
  • pop.js 中的第 49 行是你的问题$(element).popover(options); popover 可能应该是 popOver 吗?或者什么..你想用这条线做什么?
  • 你的弹窗功能在哪里?
  • 内部函数bootstap
  • 当我删除 jquery 时,它显示标题但不显示 HTML 竞争编辑和删除

标签: javascript jquery angularjs


【解决方案1】:

第一个问题是由于您在底部再次导入 jQuery(正如其他人已经提到的)。 所以,删除最后一个 jQuery 导入。

主要问题是scope.items 未定义,因此您永远无法进入if,因此popOverContent 仍然未定义。 您可能的意思是使用:

...
$scope: {
    items: '@',
    ...
}

另请参阅此modified plunkr


与问题没有直接关系,但这是popOver 指令的modified implementation。我对其进行了一些更改(以使其尽可能少地进行更改),例如它不再具有隔离范围,不再使用固定模板等。
按钮按预期工作。

【讨论】:

  • 您能否提供更多信息,我将如何使用弹出选项编辑行名称并删除行。如果您检查有按钮编辑和删除。它工作正常
  • 但我需要使用弹出框选项来编辑行名并删除 roe
  • 如果您知道如何编辑行名称和删除行的任何信息,请使用 plunker 发布该分析器,我将接受您的分析器
  • popOverContent 包含ngClicks(带有editRowName()deleteRow()),但是作用域上没有这样的功能(因为它是一个隔离作用域)。您可以通过属性和&amp; 绑定将函数传递给隔离范围。仔细看看 docs
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多