我正在尝试构建一个封装第 3 方库的指令。我的指令可能如下所示:
angular.module('MyApp').directive("shareButton", [function() {
return {
link: function($scope, elem, attrs ) {
stWidget.addEntry({
"service": attrs.service,
"element": elem[0],
"url": attrs.shareUrl,
"title": attrs.shareTitle,
"type": attrs.type || "chicklet",
"text": attrs.displayText || "",
"image": attrs.shareImage
});
}
};
}
使用可能如下所示:
<a href="#" share-button
type="chicklet"
service="facebook"
share-url="{{shareUrl}}"
share-title="{{shareTitle}}"
share-image="{{shareImage}}"></a>
问题出现在您使用{{ someValue }}
绑定时。在指令上调用链接方法期间,这些值作为 null 传递。要获得这些值,您必须使用attrs.$observe()
. 问题是我正在使用的 3rd 方库在调用stWidth.addEntry()
. 我已经对他们的代码进行了大量分析,他们使用闭包和局部变量来确保我无法更改这些值。
所以我不能对第 3 方库做任何事情,除了重写它,所以我的问题是我可以用 Angular 做什么来延迟调用该stWidget.addEntry()
方法,直到我拥有所有的值。还是有一种不必使用该attrs.$observe()
方法的绑定形式?
我不在乎绑定更改。在这种情况下,简单的一次绑定就足够了。