首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以角度表示的包裹基础4分隔缝

以角度表示的包裹基础4分隔缝
EN

Stack Overflow用户
提问于 2013-03-08 20:59:19
回答 2查看 2.1K关注 0票数 10

我是Angular的新手,只是想和Zurb Foundation 4和谐共处。一个很好的例子;我正在尝试使用http://foundation.zurb.com/docs/components/reveal.html组件。

直截了当的方法似乎是包装成指令:

代码语言:javascript
复制
directive('modal', function() {
    return {
        template: '<div ng-transclude id="notice" class="reveal-modal">' +
                  '<a close-modal></a>' +
                  '</div>',
        restrict: 'E',
        transclude: true,
        replace: true,
        scope: {
            'done': '@',
        },
        transclude: true,
        link: function(SCOPE, element, attrs, ctrl) {
            SCOPE.$watch('done', function (a) {
                // close-modal
            });
        }
    }
}).
directive('closeModal', function() {
    return {
        template: '<a ng-transclude href="#" class="close-reveal-modal">x</a>',
        restrict: 'A',
        transclude: true,
        replace: true
    }
}).
directive('showModal', function() {
    return {
        template: '<a ng-transclude class="reveal-link" data-reveal-id="notice" href="#"></a>',
        restrict: 'A',
        transclude: true,
        replace: true,
    }
});

这在一定程度上可以很好地工作,例如,我可以使用模式来显示模板中的不同通知:

代码语言:javascript
复制
  <modal done="">
    <div ng-include src="'partials/notices/' + notice + '.html'"></div>
  </modal>
  <select ng-model="notice" ng-options="n for n in ['notice-1', 'notice-2']">
      <option value="">(blank)</option>
  </select>
  <a show-modal>show modal</a>

然而,当我想要在某个事件上(例如在$watch中)从控制器/触发关闭模式/显示模式时,问题就变得棘手了。我假设我的指令需要一个控制器来触发点击,但这会是一个很好的角度练习吗?

EN

回答 2

Stack Overflow用户

发布于 2014-01-06 01:14:16

这个问题由来已久,我不知道它是否适用于don。但我只是通过调用Angular的.run()方法上的.foundation()方法将dropbox库包装到了angular中:

代码语言:javascript
复制
app.run(function ($rootScope) {
    $rootScope.$on('$viewContentLoaded', function () {
        $(document).foundation();
    });
});

这对我很有效。我猜你也可以创建一个指令来处理用户交互。

票数 0
EN

Stack Overflow用户

发布于 2013-03-30 07:19:13

控制器不应该直接触发UI事件,也不应该直接操作UI元素。所有这些代码都应该放在指令中。

您可以做的是:

  1. 将指令作用域中的布尔绑定到父作用域,并在其上添加监视。我想你已经这么做了。或者在控制器上执行scope.$

,然后在指令中添加scope.$

  1. 以关闭then。
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15294572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档