【发布时间】:2013-03-26 02:23:22
【问题描述】:
我正在尝试构建一个封装第 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()。问题是我正在使用的第 3 方库在调用 stWidth.addEntry() 后修改这些值的方法绝对为零。我已经对他们的代码进行了大量分析,他们使用闭包和局部变量来确保我无法更改这些值。
所以除了重写它之外,我无法对 3rd 方库做任何事情,所以我的问题是我可以用 Angular 做什么来延迟调用 stWidget.addEntry() 方法,直到我拥有所有值。或者有没有一种不必使用attrs.$observe()方法的绑定形式?
我不关心绑定更改。在这种情况下,简单的一次性绑定就足够了。
【问题讨论】:
标签: javascript angularjs promise