Angularjs 在angular指令中使用模板可以工作,但templateUrl不起作用

Angularjs 在angular指令中使用模板可以工作,但templateUrl不起作用,angularjs,kendo-ui,Angularjs,Kendo Ui,我有一本书 在这个例子中,我使用剑道菜单和剑道的角度指令。菜单中的每个项目都是我的自定义指令。当我在指令中使用template时效果很好,但当我使用templateUrl时效果不好,有什么想法吗 我之所以对菜单使用自定义指令,是因为我无法找到如何注册菜单中特定项的单击。在剑道菜单选择中有一个事件,我可以使用它来注册所有菜单项选择,但是在回调函数中,我不知道选择了哪个项,因为DOM元素上没有id,我也没有获取模型数据,因此没有显示单击了什么。例如,我如何知道单击了“打开”菜单 1指令剑道菜单从其内

我有一本书

在这个例子中,我使用剑道菜单和剑道的角度指令。菜单中的每个项目都是我的自定义指令。当我在指令中使用template时效果很好,但当我使用templateUrl时效果不好,有什么想法吗

我之所以对菜单使用自定义指令,是因为我无法找到如何注册菜单中特定项的单击。在剑道菜单选择中有一个事件,我可以使用它来注册所有菜单项选择,但是在回调函数中,我不知道选择了哪个项,因为DOM元素上没有id,我也没有获取模型数据,因此没有显示单击了什么。例如,我如何知道单击了“打开”菜单

1指令剑道菜单从其内容引导剑道菜单。如果您使用的是模板,那么一切都很好,因为子html结构是在剑道引导菜单之前创建的。如果您使用的是templateUrl,则会加载模板,如果数据到达,则会更新指令中的dom。但是此时剑道菜单指令已经准备好引导菜单,所以它不会意识到对dom所做的任何更改。如何解决此问题:正如您所做的那样-仅使用内联模板或在使用模板之前将模板放入templateCache。但这需要对代码进行大量更改

我不太确定你的问题出在哪里。但您可以注册如下ng click功能:

<ul kendo-menu>
    <li ng-repeat="item in menuData.dataSource">
        <label>{{item.text}}</label>
        <ul>
           <li ng-click="menuSelected(subitem)" ng-repeat="subitem in item.items/>
              <label>{{subitem.text}}</label>
           </li>
        </ul>
    </li>
</ul>
这是工作票

如果从数据源填充菜单,则可以在菜单数据中指定select函数:

$scope.menuData = {
    select: function(e) {
        console.log(e);
        console.log(e.item.textContent);
     },
    dataSource: [ ... ] };

e、 item.textContent是您在数据源中以文本形式提供的值。

即使使用模板,您的plunker链接也不会显示视图。这很奇怪。。。我确实看到了。这里是一个类似的例子在js箱,但这里的模板url根本不工作。。。如果我不是在渲染内容,而是在使用k选项,则在这种情况下,菜单会渲染内容本身,因此我无法添加ng-click。您可以用这种方式更改您的plunkr吗?那么我可以检查一下吗?关于我的示例,我还有一个问题:当使用菜单项指令时,我注册为使用ng click单击。这样做的问题是,单击会冒泡,因此,如果单击内部菜单项,也会触发外部菜单项的单击。为了解决这个问题,我添加了$event.stopPropagation;但这也会停止菜单行为,如单击项时关闭菜单。我不知道如何在不停止菜单默认行为的情况下防止冒泡。2查看我的编辑。您可以为菜单配置提供选择功能;冒泡-困难。您可以访问菜单并自己关闭它:var menu=$menu.datakendoMenu;menu.closeItem1;->,但这并不是一个角度:如果我不想使用文本内容,而是想获得一些id,甚至是数据模型本身。。。我不知道怎么弄到它。我无法使用文本指示单击的内容。
$scope.menuData = {
    select: function(e) {
        console.log(e);
        console.log(e.item.textContent);
     },
    dataSource: [ ... ] };