- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何从指令中获取属性,如下所示:
<div swiper="{mode:'vertical'}">
<slide ng-repeat="slide in news.images">
<img src="{{slide.image}}" alt="{{slide.caption}}">
</slide>
</div>
进入下面的这个 Controller :(我想用属性替换下面的 mode:'horizontal',或者将上面 HTML 上的内联属性与下面的属性合并。
angular.module('myApp')
.directive('swiper', function($timeout) {
return {
restrict: 'EA',
template: "<div class='swiper-container'>" +
"<div class='swiper-wrapper'></div>" +
"<div style='display: none' ng-transclude></div>" +
"</div>",
replace: true,
transclude: true,
// We use a controller here so the slide directive
// can require it and call `addSlide`.
controller: function($element, $attrs) {
var newSlides = [];
var mySwiper = null;
var slideCount = 0;
var callbacks = {};
// Attached directly to the controller so other directives
// have access to it.
this.addSlide = function(html, callback) {
if (mySwiper) {
var newSlide = mySwiper.createSlide(html.html());
// Hackily save off the callback based on
// a unique ID since getData() for
// swiper.clickedSlide doesn't appear to work
// when using setData() on newSlide.
newSlide.data('slideNumber', ++slideCount);
mySwiper.appendSlide(newSlide);
callbacks[slideCount] = callback;
mySwiper.swipeTo(0, 0, false);
} else {
// mySwiper hasn't been initialized yet; save
// the slide off in an array so we can add it later.
newSlides.push({html: html, callback: callback});
}
};
$timeout(function() {
console.log($attrs.swiper);
mySwiper = $element.swiper({
mode: 'horizontal',
loop: true,
autoResize: true,
resizeReInit: true,
calculateHeight: true,
centeredSlides: true,
cssWidthAndHeight: false,
onSlideClick: function(swiper) {
// Look up the callback we saved off and call it.
var clicked = swiper.clickedSlide;
var slideNumber = clicked.data('slideNumber');
var callback = callbacks[slideNumber];
if (callback) callback();
}
});
// Now that mySwiper has been initialized, iterate
// over any calls to `addSlide` that happened
// before we were ready and add them to the swiper.
for (var i = 0; i < newSlides.length; i++) {
var slide = newSlides[i];
this.addSlide(slide.html, slide.callback);
}
}.bind(this));
}
}
})
.directive('slide', function() {
return {
restrict: 'EA',
// Look for a parent `swiper` element and get its controller
require: '^swiper',
template: "<div class='swiper-slide' ng-transclude></div>",
replace: true,
transclude: true,
link: function(scope, elem, attrs, swiper) {
swiper.addSlide(elem, attrs, function() {
scope.$apply(attrs.slide);
scope.$apply(attrs.ngClick);
});
}
}
});
最佳答案
该指令最初由 BinaryMuse 创建。我向他寻求帮助,他为我解决了答案。这是他要说的话。
所以我们从默认的选项列表开始。如果我们将任何内容传递给 swiper 属性,我们会将其转换为 $scope.$eval 的对象,然后将其与 angular.extend 混合到默认选项中。
我还将 $scope 和 $attrs 添加到指令 Controller 的参数列表中
var swiperOptions = {
loop: true,
mode: 'vertical',
onSlideClick: function(swiper) {
// Look up the callback we saved off and call it.
var clicked = swiper.clickedSlide;
var slideNumber = clicked.data('slideNumber');
var callback = callbacks[slideNumber];
if (callback) callback();
}
};
if ($attrs.swiper) angular.extend(swiperOptions, $scope.$eval($attrs.swiper));
$timeout(function() {
mySwiper = $element.swiper(swiperOptions);
关于javascript - 来自内联 HTML 的 Swiper.js AngularJS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049485/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!