Angular指令不识别控制器的范围

时间:2014-08-03 16:35:28

标签: angularjs

首先,我知道我将不得不更改标题,希望我可以根据答案更好地形成我的问题。

我正在研究breadcrumb using angular(如果链接失败,请告诉我)但由于某种原因它无法正常工作。一切似乎都很好但是当我点击链接转到下一页时(对于烦人的警报提前抱歉)。我收到以下错误...

  

未捕获的TypeError:无法读取未定义的属性“addCrumbs”

该指令显然正在工作,所以我猜这是导致问题的这条线......

angular.element('#crumb').scope().addCrumbs(crumbs);

有人可以解释为什么这不起作用吗?

1 个答案:

答案 0 :(得分:2)

为什么你做错了:)

  • 首先,Angular专为单页应用程序而设计,可以通过ngRoute (official)ui-router (from Angular UI Team, more powerful, more complicated)等模块模拟页面之间的导航。

    < / LI>
  • 您的示例并未遵循&#34; Angular方式&#34;因为你有两个&#34;索引&#34;页面,我的意思是,每次点击内部链接时都会重新加载Angular(和您的应用),这样您就无法在页面之间共享变量(在您的情况下,您需要&#34;面包屑&#34;共享页面之间)。

  • 您的breadcrumb指令应通过data binding共享breadcrumb数组,而不是明确使用外部控制器。 See here for more infos

  • ng-repeat指令应该应用于li元素而不是ol元素。

更新了Plunkr

请参阅 updated version of your Plunkr 。 我添加了ngRoute模块和分隔页面。 但是我认为它不是一种非常可重复使用且干净的面包屑方式。

结论

我建议您使用专用模块来处理您的面包屑,例如ng-breadcrumb(请参阅 demo here