调用两次失败的AngularJS指令

调用两次失败的AngularJS指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我有(可能)一个非常简单的问题,但问题是我花了比预期更多的时间试图解决它,而我还没有做到 我在应用程序中的指令很难复制,因此,为了简单起见,我在中用一个简单的指令编写了一个脚本,但结果相同 本质上,这个问题与一个指令有关,该指令在每个指令上使用不同的选项调用了两次。结果是,呈现的指令始终采用第一组选项的值(有时仅采用第二组选项) 我的HTML: <div ng-controller="MyCtrl"> <button-menu options="options1" /&

我有(可能)一个非常简单的问题,但问题是我花了比预期更多的时间试图解决它,而我还没有做到

我在应用程序中的指令很难复制,因此,为了简单起见,我在中用一个简单的指令编写了一个脚本,但结果相同

本质上,这个问题与一个指令有关,该指令在每个指令上使用不同的选项调用了两次。结果是,呈现的指令始终采用第一组选项的值(有时仅采用第二组选项)

我的HTML:

<div ng-controller="MyCtrl">
    <button-menu options="options1" />
    <button-menu options="options2" />
</div>

我的选项(在控制器中):

//按钮选项
$scope.options1={
id:“1”,
按钮模板:“按钮1”
};
$scope.options2={
id:“2”,
按钮模板:“按钮2”
};
我不知道我做错了什么,但实际上这是我第一次需要一个指令在同一个页面中至少运行两次,所以我可能遗漏了什么

有什么想法吗


谢谢

该范围在页面上相同的自定义指令之间共享。可以将指令设置为具有独立作用域

您之所以看到它们是第一个或第二个,是因为链接发生在不同的时间,这取决于角度编译对它们的排序方式。这是因为它们具有相同的优先级


该范围在页面上相同的自定义指令之间共享。可以将指令设置为具有独立作用域

您之所以看到它们是第一个或第二个,是因为链接发生在不同的时间,这取决于角度编译对它们的排序方式。这是因为它们具有相同的优先级


这里有一个更新的小提琴,它可以工作:

首先,出于一个奇怪的原因,您需要按钮菜单的结束标记:

<button-menu options="options1"></button-menu>
<button-menu options="options2"></button-menu>
然后在链接功能中:

scope.buttonOptions = scope.options;

这里是一个更新的小提琴作品:

首先,出于一个奇怪的原因,您需要按钮菜单的结束标记:

<button-menu options="options1"></button-menu>
<button-menu options="options2"></button-menu>
然后在链接功能中:

scope.buttonOptions = scope.options;

哈,结束标签。。。我花了很长时间才弄明白。一个更干净的方法是使用
scope:{buttonOptions:'=options}
并避免在link函数中设置buttonOptions。是的,很好的调用。我在scope上做了类似的事情,但它不起作用。“奇怪的原因”是OP试图自动关闭指令标记,但HTML5中的“自定义”标记不是自动关闭的,当您尝试时,您会得到一个“run-on”标记。换句话说,你得到了
,我同意罗伊的观点,我也是这么做的(按钮选项:'=options'),但我会给你+1,因为我的不起作用!谢谢你们的回答(特别是对你们@Andreeib)。有结束标记真的很奇怪,但实际上我做到了,并创建了独立的作用域,它可以完美地工作!再次感谢你!哈,结束标签。。。我花了很长时间才弄明白。一个更干净的方法是使用
scope:{buttonOptions:'=options}
并避免在link函数中设置buttonOptions。是的,很好的调用。我在scope上做了类似的事情,但它不起作用。“奇怪的原因”是OP试图自动关闭指令标记,但HTML5中的“自定义”标记不是自动关闭的,当您尝试时,您会得到一个“run-on”标记。换句话说,你得到了
,我同意罗伊的观点,我也是这么做的(按钮选项:'=options'),但我会给你+1,因为我的不起作用!谢谢你们的回答(特别是对你们@Andreeib)。有结束标记真的很奇怪,但实际上我做到了,并创建了独立的作用域,它可以完美地工作!再次感谢你!