- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试集成JQuery.iCheck (用于复选框和单选按钮
样式的插件)。我在这里遵循了一些建议,即集成 jQuery 插件以与 Angular ngRepeat 完全兼容的方法是使用指令
。
所以我实现了一个指令
:
webApp.directive('icheck', function($timeout, $parse) {
return {
link: function($scope, element, $attrs) {
return $timeout(function() {
var ngModelGetter, value;
ngModelGetter = $parse($attrs['ngModel']);
value = $parse($attrs['ngValue'])($scope);
return $(element).iCheck({
checkboxClass: 'icheckbox_minimal',
radioClass: 'iradio_minimal-grey',
checkboxClass: 'icheckbox_minimal-grey',
increaseArea: '20%'
}).on('ifChanged', function(event) {
if ($(element).attr('type') === 'checkbox' && $attrs['ngModel']) {
$scope.$apply(function() {
return ngModelGetter.assign($scope, event.target.checked);
});
}
if ($(element).attr('type') === 'radio' && $attrs['ngModel']) {
return $scope.$apply(function() {
return ngModelGetter.assign($scope, value);
});
}
});
});
}
};
});
此指令
不能完全与我的ngRepeat元素
配合使用,并且不会改变对象
的属性投票
。
我的代码:
var webApp = angular.module('webApp', []);
//controllers
webApp.controller ('VotesCtrl', function ($scope, Votes) {
$scope.votes = Votes;
$scope.statuses = ["Approved","Pending","Trash","Spam"];
$scope.selectedID = 1;
$scope.expand = function(vote) {
console.log("show");
$scope.vote = vote;
$scope.selectedID = vote.id;
};
$scope.change = function() {
for(var i = 0; i < $scope.votes.length; i++) {
if($scope.votes[i].cb) {
$scope.votes[i].status = $scope.votes.status;
$scope.votes[i].cb = false;
}
$scope.show = false;
}
};
});
//services
webApp.factory('Votes', [function() {
//temporary repository till integration with DB this will be translated into restful get query
var votes = [
{
id: '1',
created: 1381583344653,
updated: '222212',
ratingID: '3',
rate: 5,
ip: '198.168.0.0',
status: 'Pending',
userIdentification:'IP-ADDRESS'
},
{
id: '111',
created: 1381583344653,
updated: '222212',
ratingID: '4',
rate: 5,
ip: '198.168.0.1',
status: 'Spam',
userIdentification:'FLASH-COOKIES'
},
{
id: '2',
created: 1382387322693,
updated: '222212',
ratingID: '3',
rate: 1,
ip: '198.168.0.2',
status: 'Approved',
userIdentification:'HTTP-COOKIES'
},
{
id: '4',
created: 1382387322693,
updated: '222212',
ratingID: '3',
rate: 1,
ip: '198.168.0.3',
status: 'Spam',
userIdentification:'IP-ADDRESS'
}
];
return votes;
}]);
webApp.directive('icheck', function($timeout, $parse) {
return {
link: function($scope, element, $attrs) {
return $timeout(function() {
var ngModelGetter, value;
ngModelGetter = $parse($attrs['ngModel']);
value = $parse($attrs['ngValue'])($scope);
return $(element).iCheck({
checkboxClass: 'icheckbox_minimal',
radioClass: 'iradio_minimal-grey',
checkboxClass: 'icheckbox_minimal-grey',
increaseArea: '20%'
}).on('ifChanged', function(event) {
if ($(element).attr('type') === 'checkbox' && $attrs['ngModel']) {
$scope.$apply(function() {
return ngModelGetter.assign($scope, event.target.checked);
});
}
if ($(element).attr('type') === 'radio' && $attrs['ngModel']) {
return $scope.$apply(function() {
return ngModelGetter.assign($scope, value);
});
}
});
});
}
};
});
我的 HTML:
<body ng-controller="VotesCtrl">
<div>
<ul>
<li class="check" ng-click="">
<input type="checkbox" ng-model="master" />
</li>
<li class="created">
<a>CREATED</a>
</li>
<li class="ip">
<b>IP ADDRESS</b>
</li>
<li class="status">
<b>STATUS</b>
</li>
</ul>
<ul ng-repeat="vote in votes">
<li class="check">
<input type="checkbox" ng-model="vote.cb" ng-checked="master" />
</li>
<li class="created" ng-class="{selected: vote.id == selectedID}">
<a href="#" ng-click="expand(vote)">{{vote.created|date}}</a>
</li>
<li class="ip">
{{vote.ip}}
</li>
<li class="status">
{{vote.status}}
</li>
</ul>
</div>
<br />
<br />
<div class="details" ng-init="expand(votes[0])">
<h3>Details:</h3>
<div>DATE: {{vote.created | date}}</div>
<div>IP: {{vote.ip}}</div>
<div >
Cookies:
<div>
<input icheck type="radio" ng-model="vote.userIdentification" name="iCheck" value="FLASH-COOKIES" />
<span>FLASH COOKIES</span>
</div>
<div>
<input icheck type="radio" ng-model="vote.userIdentification" name="iCheck" value="HTTP-COOKIES" />
<span>HTTP COOKIES</span>
</div>
<div>
<input icheck type="radio" ng-model="vote.userIdentification" name="iCheck" value="IP-ADDRESS" />
<span>IP ADDRESS</span>
</div>
</div>
</div>
</body>
最佳答案
已在此链接上解决:https://github.com/fronteed/iCheck/issues/62通过 wajatimur
webApp.directive('icheck', function($timeout, $parse) {
return {
require: 'ngModel',
link: function($scope, element, $attrs, ngModel) {
return $timeout(function() {
var value;
value = $attrs['value'];
$scope.$watch($attrs['ngModel'], function(newValue){
$(element).iCheck('update');
})
return $(element).iCheck({
checkboxClass: 'icheckbox_flat-aero',
radioClass: 'iradio_flat-aero'
}).on('ifChanged', function(event) {
if ($(element).attr('type') === 'checkbox' && $attrs['ngModel']) {
$scope.$apply(function() {
return ngModel.$setViewValue(event.target.checked);
});
}
if ($(element).attr('type') === 'radio' && $attrs['ngModel']) {
return $scope.$apply(function() {
return ngModel.$setViewValue(value);
});
}
});
});
}
};
});
关于angularjs - 使用指令集成 Angular 和 JQuery.iCheck 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19346523/
我一直在尝试对齐内联输入 radio 类型。但我仍然无法使它们内联。它出现在下一行。 这是编码单元。 Display on Homepage
我无法获取iCheck iCheckbox plugin在任何浏览器中显示。 这是一个 jSFiddle。 iCheck 依赖于 jQuery 1.7+。 http://jsfiddle.net/jm
我正在使用引导模板,该模板使用 iCheck v1.0.2 当我创建这样的输入时: 它生成结果: 我想检测此复选框的更改。 As the documentation says ,有一
您好 a login site . 它在浏览器上运行良好。但是,当我在手机上看到它时,它没有显示该复选框。 这是 iCheck 复选框的脚本。如果我删除它,它会在移动设备上显示原始复选框。 $(fun
我正在使用这个iCheck plugin自定义复选框和单选按钮。我有问题。我正在动态加载复选框,但 iCheck 插件不起作用。如果我动态加载复选框。 这就是我加载复选框的方式。 $('#mycon
我将鼠标悬停在包含一些 block 的 anchor 标记上,并且在 block 中我有 icheckbox,它正在初始化但无法工作,就像我无法检查复选框一样。 $('.categories-bloc
“分享”链接旁边有 iCheck 复选框。理想情况下,用户会勾选该框,然后单击共享链接,但有时他们不会这样做。当他们点击共享链接时,我如何勾选该框? Share 此外,这些都在转发器中,大
我有以下表单界面 在这里,我使用了 icheck 复选框。当我手动选中和取消选中该复选框时,它工作正常,因为我编写了以下代码 //if checkbox "Product Feed Url" is u
我正在使用 iCheck 复选框,在浏览器和编码中一切正常,但是当我尝试打印页面时,复选框根本不可见, 有没有办法在纸上打印复选框? 即使您只是右键单击此页面http://icheck.f
我正在使用 Jquery iCheck 来设置输入字段的样式,但我无法真正处理来自 iCheck 的回调。我想要检索的是具有给定类名的容器内所有已检查的输入值 http://jsfiddle.net/
我尝试通过这种方式从单选按钮 (iCheck) 获取值,但始终只返回第一个单选按钮的值,而忽略其余的。理论上说代码没问题,即使这样它返回的结果也很糟糕。 Radio box, get the chec
我有以下代码: $("#add-new-size-grp").click( function (event) { event.preventDefault(); $.ajax({
我想用iCheck插件( http://icheck.fronteed.com/ )显示自定义复选框,我引用了官网的示例,但我发现它不能在单个页面上显示多色模式。 谁能帮我检查一下? 是否可以显示以下
可能这个问题之前也在这里被问过。不幸的是,我没有找到最佳答案。更改此 iCheck 库的输入大小的方法是什么,因为它对我的网站来说太大了。 CSS: .icheckbox_flat-blue, .ir
我将 iCheck 用于单选按钮和复选框。 在 iCheck 中如何使用复选框来充当单选按钮? 这是我的: $j(function(){ $j('input:checkbox.tip-fact
我正在使用 iCheck framework我有两个输入 单击时调用 ajax 函数。如果出现问题,我想将选中的属性设置回之前选择的输入。 var currentChecked = $("in
我正在使用 iCheck 插件来自定义复选框。我需要在选中一个或多个 复选框时显示某些文本,并在未选中时隐藏文本。 我目前使用的代码会在第一次点击时显示文本,但不会隐藏它,除非我再点击 2 次。我有多
我正在使用iCheck复选框插件。我在那里放置了“全选”功能。结构: 全选 复选框 1 复选框 2 复选框 3 它工作得很好,就像选中“全选”时一样,所有复选框都会被选中。取消选中“全选”时,所有复选
iCheck 仅适用于第一页上的数据表。当我导航到任何其他页面时,它会显示复选框,但它们没有应用 iCheck。此代码有帮助,但不能 100% 工作。 function turn_on_icheck(
我使用“iCheck jQuery”来修改复选框的样式。但是当我添加 iCheck 脚本时 - 我的 onlick 方法停止工作。为什么会这样? $(document).ready
我是一名优秀的程序员,十分优秀!