将jquery插件应用于angularJS ng repeat中的新项目
Applying jquery plugin to new item in angularJS ng-repeat
Hi我有一个小部件,它使用angular进行渲染,还有一个jquery引导插件来切换复选框。
<div class="notification" ng-repeat="notification in notifications">
<textarea ng-model="notification.text">
<div class="make-switch" data-on="success" data-off="danger">
<input type="checkbox" ng-model="notification.status">
</div>
</div>
<button ng-click="addNotification()">Add</button>
在第一次渲染时,页面加载时一切正常,但当我添加新的通知时,插件不会应用。这是合乎逻辑的。
var myAppModule = angular.module('myApp', []);
myAppModule.controller('NotificationController',function($scope,$timeout) {
$scope.notifications = [
{
text:'text1.',
status: true
},
{
text:'Text2',
status: false
}
];
$scope.addNotification = function(){
var notification = {
text: "",
status: true
}
$scope.notifications.push(notification);
$timeout(function(){
$('.notification:last() .make-switch').bootstrapSwitch();
})
}
});
所以我使用$timeout和jquery":last()"选择器将插件应用到最后一项。
这是正确的吗??一切正常,但看起来不太好。
这是一个很好的指令候选者。请参阅此处对角度指令的更详细解释。当您必须以某种方式修改DOM时,您应该在指令中进行修改。控制器访问和修改DOM被认为是一种糟糕的做法,它应该与作用域一起工作。
因此,在您的情况下,您可以创建一个简单的指令
directive('notificationSwitch', function () {
return {
restrict: 'A',
link: function(scope, element) {
element.bootstrapSwitch();
}
};
});
在你的视图中,你像一样使用这个指令
<div notification-switch data-on="success" data-off="danger">
这样,每次使用该指令添加新项时,都会调用它的链接函数,该函数将应用bootstrapSwitch
相关文章:
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- Redux处理新项目和id
- JQuery Masonry.Ajax图标和“;加载新项目”;绳子放错地方了
- Ng-Repeat在末尾添加新项目
- AngularJs/GitHub :如何在没有任何历史记录的情况下将角度种子克隆到我的新项目中
- 每天从数组中挑选新项目
- 将jquery插件应用于angularJS ng repeat中的新项目
- 使用新项目更新KendoUI网格数据源
- AngularJS ForEach将新项目推送到对象中
- 在 SharePoint 2010 上创建“添加新项目”按钮
- id:在续集中创建新项目时为空
- 新项目的所有列表项弹出窗口在悬停时立即显示 - Javascript
- AngularJS:插入新项目后对列表重新排序
- 扩展菜单插入带有覆盖的新项目
- 如何将新项目添加到 srt 文件中
- 如何在 JQGRID 新项目弹出窗口中应用 OnKeyUp 方法
- 在SlickGrid的dataView的第一行添加一个新项目,就像JavaScript的unshift一样
- 当一个新项目被添加到FireBug控制台时,是否有一个jQuery事件等同于
- jquery:单击新项目时重置css
- 如何在将新项目POST到服务器后更新ng重复