使用Angular ng-repeat将数据动态加载到materializecss滑块中不起作用
Load data into materializecss slider dynamically using Angular ng-repeat not working
我可以将鼠标悬停在滑块上div 和"复制图像 url"选项,因此数据设置正确,但滑块什么也没显示,它只是灰空白。
如果我删除类"滑块,幻灯片",那么我的所有数据都会垂直弹出,但在使用"滑块,幻灯片"类时不会。
我在我的主 HTML 中有这个:
$(document).ready(function () {
$('.slider').slider();
});
我通过 GET 请求在角度中获取的示例 Json 数据:
cast: [
{
cast_id: 0,
character: "Mark Watney",
credit_id: "53e7e85e0e0a266f9a0029aa",
id: 1892,
name: "Matt Damon",
order: 0,
profile_path: "/eLAWpp5BLbTwjj35MbGzpL0QkWv.jpg"
},
{
cast_id: 9,
character: "Melissa Lewis",
credit_id: "5466c78eeaeb8172820008e4",
id: 83002,
name: "Jessica Chastain",
order: 1,
profile_path: "/eyv98YlnRuOOUNCD1U6w2yZDRA2.jpg"
},
{
cast_id: 11,
character: "Annie Montrose",
credit_id: "5497ab23c3a368054b0009b4",
id: 41091,
name: "Kristen Wiig",
order: 2,
profile_path: "/eqHjl70yPVAYcpYnqKk62a3pzDd.jpg"
},
{
cast_id: 13,
character: "Teddy Sanders",
credit_id: "54a7fe92c3a3680c33001972",
id: 8447,
name: "Jeff Daniels",
order: 3,
profile_path: "/gai03gCu3DxMYxFympt7hUObpI5.jpg"
}
]
现在我从角度设置此数据,但滑块显示为灰色,我可以通过将鼠标悬停在灰色区域并复制图像 url 来确认图像 URL。但是div 中没有显示任何内容。
<div class="row card-panel" ng-show="castShow">
<div class="slider">
<ul class="slides">
<li ng-repeat="act in actors.cast">
<img ng-src="http://image.tmdb.org/t/p/original{{act.profile_path}}">
<div class="caption" style="margin-top: 262px;margin-left:80px;">
<h5 class="indigo-text right-align" ng-bind="act.character"></h5>
<h6 class="white-text right-align" ng-bind="act.name"></h6>
</div>
</li>
</ul>
</div>
</div>
我正在获取和设置数据的 angularJS 代码:
DetailsService.GetMovieCredits(mid).then(function (response) {
var json = angular.fromJson(response);
//var cast = json.cast;
$scope.actors = json;
$scope.castShow = true;
}, function (response) {
});
我找到了解决方法。为什么我们不创建一个自定义事件并在获取转换响应时调度它?我们可以在同一个自定义事件上附加一个侦听器,在侦听器中我们可以调用 $('.slider').slider();
.
角度代码部分将如下所示
DetailsService.GetMovieCredits(mid).then(function (response) {
var json = angular.fromJson(response);
$scope.actors = json;
$scope.castShow = true;
//Creating custom event for slider data loaded
var event = document.createEvent('Event');
event.initEvent('slider-ready',true,true);
document.querySelector('.slider').dispatchEvent(event);
}, function (response) {
});
然后而不是打电话 $(document).ready(function () {$('.slider').slider();});
从主.html我们必须做这样的事情
$('.slider).on('slider-ready', function (e) {
//Adding timeout as direct function call was not working
setTimeout(function(){
$('.slider').slider();
},1);
});
它对我有用。希望它有所帮助。这只是我想出的一个技巧。
相关文章:
- 如何通过 Button 在 materializecss 中发送值
- MaterializeCss-手动触发波浪/涟漪效果
- Materializecss工具提示不适用于Angularjs
- 将日期(星期一、星期二等)添加到MaterializeCSS的输入中
- Materializecss 的基本可折叠示例不起作用
- 使用Angular ng-repeat将数据动态加载到materializecss滑块中不起作用
- materializecss 日期选择器量角器(错误:元素在点处不可单击)
- SideNav-MaterializeCss-绑定事件SideNav关闭
- 如何从MaterializeCSS's选择
- 使用Materializecss发送电子邮件的表单不起作用
- Materializecss日期选择器仅在过去几天
- MaterializeCSS多选不起作用
- Materializecss菜单只能在一个页面上正常工作
- MaterializeCSS模态标头
- Materializecss切换元素更改事件
- MaterializeCSS:如何切换2通知时按下一个按钮(开和关)
- Rails MaterializeCSS传递用户.id到Modal
- Materializecss Toasts with PHP
- MaterializeCSS选择框,如何让它与react一起工作
- 如何在MaterializeCSS日期选择器中禁用特定日期