【发布时间】:2013-12-02 20:52:37
【问题描述】:
我在这里有一个文章列表,但我不知道如何对 ng-repeat 中的每一篇 new 文章执行 ng-click 函数调用。现在它适用于现有文章,但是当动态添加新文章(通过 AJAX)时,我需要它们也具有相同的功能。
例如:ng-click 函数调用“+”号来显示社交按钮似乎在通过 AJAX 插入新文章后不起作用(即:删除文章,并让列表再次填充新元素)
AngularJS 是否提供任何工具来做到这一点?
<div>
<div>
<input type="text" ng-model="search">
<span>{{filtered.length}} article(s)</span>
</div>
<div article-listing ng-repeat="article in filtered = (wikiArticles | filter:search)">
<!--Individual article begin-->
<span>
<a href="{{article.url}}">{{article.title}}</a>
</span>
<div>
<a ng-click="articles.removeArticle($index)" title="Delete">
<span>✖</span>
</a>
<a ng-click="articles.toggleShare(article)">
<span class="plus-sign" title="Share">✖</span>
<div social-share ng-show="article.socialShare">
<div ng-click="socialShare = !socialShare" class="addthis_toolbox addthis_default_style addthis_32x32_style"
addthis:title="{{article.title}}" addthis:description="{{article.extract}}" addthis:url="{{article.url}}">
<a class="addthis_button_facebook"></a>
<a class="addthis_button_twitter"></a>
<a class="addthis_button_google_plusone_share"></a>
<a class="addthis_button_reddit"></a>
<a class="addthis_button_hackernews"></a>
</div>
</div>
</a>
</div>
<div>{{article.extract}}</div>
<!--Individual article end-->
</div>
</div>
ng-click 调用的代码似乎不适用于新文章插入
$scope.articles = (function() {
return {
shuffleArticles : function() {
$scope.wikiArticles.reverse();
},
removeArticle : function(index) {
$scope.wikiArticles.splice(index, 1);
$scope.fireAPICalls();
},
toggleShare : function(currArticle) {
var previousState = currArticle.socialShare;
angular.forEach($scope.wikiArticles, function(article) {
article.socialShare = false;
});
currArticle.socialShare = previousState ? false : true;
}
}
})();
【问题讨论】:
-
尝试将问题归结为更小的我们可以回答的问题。这是很多要解析的html。 jsfiddle 也会有所帮助。
-
@ZackArgyle 感谢您的建议。我稍微清理了代码,并试图进一步澄清我的问题。我将尝试弄清楚如何在 jsfiddle 上使用 Angular。现在我在这里有一个实时应用程序:discoverwiki.com,它显示了这个问题。
-
答案始终是委托...如果新添加的项目没有“看到”绑定,请使用每个 ajax 添加(重新运行模块函数)在整个范围内重新绑定方法,或者找到其他委托方式.
标签: javascript angularjs