Javascript 在AngularJS指令中访问属性

Javascript 在AngularJS指令中访问属性,javascript,angularjs,Javascript,Angularjs,我试图在AngularJS中创建一个覆盖(或模式窗口),到目前为止,我创建了html/css布局,简单地说,它是这样的 <section class="calendar"> <a open-overlay="overlay-new-calendar">Add New Calendar</a> </section> <section class="overlay overlay-new-calendar"> <

我试图在AngularJS中创建一个覆盖(或模式窗口),到目前为止,我创建了html/css布局,简单地说,它是这样的

<section class="calendar">
    <a open-overlay="overlay-new-calendar">Add New Calendar</a>
</section>



<section class="overlay overlay-new-calendar">
    <span class="bg"></span>
    <form class="wrap">
        <header>
            Add a New My Calendar
        </header>

        <div class="main">
            <label>Name<input type="text" required ng-model="newCalendar.calendar_name" /></label>
            <label>Color<input type="text" required ng-model="newCalendar.calendar_color" /></label>
        </div>

        <footer>
            <button type="submit">Add</button>
            <a close-overlay="overlay-new-calendar">Cancel</a>
        </footer>
    </form>
</section>

但是我无法让属性返回
覆盖新日历
。还有,如果有人知道的话,我怎么能在没有jquery的情况下做这个节目呢:D非常感谢你,丹尼尔

在不使用jQuery的情况下显示或隐藏是使用属性完成的,例如“ng show=myValue”。因此,您的指令将更改模型的值,例如scope.myValue=true


访问属性应该是attr.openOverlay,因为属性名称在指令中是标准化的。

不使用jQuery显示或隐藏是使用属性完成的,例如“ng show=myValue”。因此,您的指令将更改模型的值,例如scope.myValue=true


访问属性应该是attr.openOverlay,因为属性名称在指令中是标准化的。

attr
标准化元素上的属性。属性
openOverlay
data openOverlay
等处理相同,可通过
attr.openOverlay
访问

这里有更多的信息:


对于显示和隐藏,您可以使用peterorum的答案
ng show

attr
使元素上的属性正常化。属性
openOverlay
data openOverlay
等处理相同,可通过
attr.openOverlay
访问

这里有更多的信息:

对于显示和隐藏,您可以使用peterorum的答案
ng show

peterorum是正确的

要详细说明他的答案,您需要:

  • 我假设您在某个地方定义了scope.newCalendar。在同一位置定义scope.isNewCalendarOverlayVisible=false
  • 将ng click=“isNewCalendarOverlayVisible=true”添加为要打开覆盖的链接或按钮的属性
  • 将ng show=“isNewCalendarOverlayVisible”添加到覆盖图中
  • 通过这种方式,您的覆盖正在监视该范围属性,以了解它是否应该可见。单击按钮时,该属性将更改为true,并且模式将可见。

    peterorum是正确的

    要详细说明他的答案,您需要:

  • 我假设您在某个地方定义了scope.newCalendar。在同一位置定义scope.isNewCalendarOverlayVisible=false
  • 将ng click=“isNewCalendarOverlayVisible=true”添加为要打开覆盖的链接或按钮的属性
  • 将ng show=“isNewCalendarOverlayVisible”添加到覆盖图中

  • 通过这种方式,您的覆盖正在监视该范围属性,以了解它是否应该可见。单击按钮时,该属性将更改为true,并且模式将可见。

    并确保在准备再次隐藏表单时设置
    isNewCalendarOverlayVisible=false
    。非常感谢,这将我带到了一个新的级别:)并确保在准备再次隐藏表单时设置
    isNewCalendarOverlayVisible=false
    。非常感谢,这将我带到了一个新的级别:)
    fixEvents.directive('openOverlay', function() {
        return function(scope, elem, attr) {
            elem.bind('click', function() {
                alert(attr.open-overlay);
                $('.overlay-new-calendar').show();
            });
        }
    });