【发布时间】:2013-01-11 18:18:24
【问题描述】:
我正在尝试使用bootstrap scollspy 突出显示由角度中继器生成的列表项。
我遇到的问题是,在 angular 将模型更改应用于视图之前,我正在从 angular 控制器刷新 scrollspy 插件。
确保在 DOM 本身更新后发生 scrollspy('refresh') 调用的角度方式是什么(不仅仅是角度模型)?
模板:
<div class="span2" id="addressList">
<ul class="nav nav-tabs nav-stacked affix">
<li ng-repeat="addr in addresses"><a href="#{{addr.id}}">{{addr.id}}</a></li>
</ul>
</div>
控制器:
$scope.httpSuccessCallback = function (data)
$scope.addresses.push(data);
$('[data-spy="scroll"]').scrollspy('refresh'); //calls $('#addressList .nav > li > a')
}
【问题讨论】:
-
这可能已经说了 1000 次了。但是你不想从你的控制器函数中进行 DOM 操作。您要做的是创建一个处理所有这些的指令。然后在触发更新的任何东西上使用 $watch 来更新它。
-
我没有在我的控制器中进行任何 DOM 操作。我正在尝试在角度生命周期的适当位置更新 jQuery 插件。似乎 $watch 可能仍然是正确的机制?
-
您正在从 DOM 中选择一个元素,并绑定事件等... 这就是我所说的“DOM 操作”的真正含义。 Angular 文档很好地解决了这个问题。您不应该在控制器中引用 DOM。
-
这里,请参阅“正确使用控制器”部分:docs.angularjs.org/guide/dev_guide.mvc.understanding_controller
标签: jquery-plugins twitter-bootstrap angularjs