【发布时间】:2013-02-18 07:17:32
【问题描述】:
我是所有 Angular World 的新手,我在管理指令时遇到了问题。
我正在开发一个使用选项卡的项目,我想扩展它的功能以在窗口大小比我所有选项卡的宽度更窄时处理溢出的选项卡,所以我需要计算元素的一些尺寸来实现这一点. 选项卡是从 $scope 中的对象构建的,问题是计算尺寸的指令在视图完全编译之前运行。
Plnkr 链接: http://plnkr.co/edit/LOT4sZsNxnfmQ8zHymvw?p=preview
我尝试过的:
- 使用 templateUrl 在指令中加载模板
- 使用 transclude
- 在 ng-repeat 中使用 $last
- 尝试重新排序指令并在每个选项卡中创建一个虚拟指令以触发事件
我认为有一些 AngularJs 事件或属性来处理这种情况。
请大家帮忙:)
【问题讨论】:
-
您使用的
$timeout有什么问题?我一直在使用类似的指令,并使用0进行延迟,似乎让浏览器有机会在代码在指令中运行之前绘制 DOM -
你是对的,但这是解决方法而不是解决问题的方法,当你有复杂的指令来构建它时,将通过多次使用超时而结束并导致一团糟!
-
是常用的用法……习惯了
-
如果我们只是“习惯”了我们所有的计算......我们仍然会输入机器代码。
-
我也需要备份。我将指令插入到视图中,它们会立即呈现,但动态类不会。更糟糕的是,您在添加过程中会获得中间类,例如 your-class-name-add 。我已经尝试过 $timeout 并且我需要添加一个长达 500 毫秒的延迟来覆盖这些更改 - 这是不可靠的。亚历山大的以下回答代表了迄今为止最优雅的方法,但涉及另一只手表......它变得难以管理。
标签: angularjs angularjs-directive