AngularJS指令调用两次失败

abo*_*oni 1 angularjs angularjs-directive

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

我在应用程序中的指令很难复制,因此,为了简单起见,我在JSFiddle创建了一个带有简单指令但具有相同结果的脚本.

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

我的HTML:

<div ng-controller="MyCtrl">
    <button-menu options="options1" />
    <button-menu options="options2" />
</div>
Run Code Online (Sandbox Code Playgroud)

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

// Button Options        
$scope.options1 = {
    id: "1",
    buttonTemplate: "<span style=\"font-size:16pt\">Button 1</span>"
};

$scope.options2 = {
    id: "2",
    buttonTemplate: "<span style=\"font-size:10pt\">Button 2</span>"
};
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么,但实际上这是我第一次需要在同一页面中至少运行两次的指令,所以可能我错过了一些东西.

有任何想法吗?

谢谢

And*_*rei 6

这是一个有效的更新小提琴:http: //jsfiddle.net/DewZb/4/

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

<button-menu options="options1"></button-menu>
<button-menu options="options2"></button-menu>
Run Code Online (Sandbox Code Playgroud)

创建一个孤立的范围:

scope: {options: '='}
Run Code Online (Sandbox Code Playgroud)

然后在链接功能:

scope.buttonOptions = scope.options;
Run Code Online (Sandbox Code Playgroud)

  • 更简洁的方法是使用`scope:{buttonOptions:'= options'}`并避免在link函数中设置buttonOptions. (2认同)
  • 是的,很好的电话.我在范围上做了类似的事情,但它没有用."奇怪的原因"是OP试图自我关闭指令标签,但HTML 5中的"自定义"标签不是自动关闭的,当你尝试时,你会得到一个"运行"标签.换句话说,你得到`<button-menu options ="options1"> <button-menu options ="options2"> </ button-menu> </ button-menu> (2认同)