这似乎是一个简单的问题,但我一直在谷歌搜索一段时间,似乎无法找到它。
在我的JS中,我有一个名为parseTags(book)
的东西,它采用JSON逗号分隔的标记列表(book.tags
)并将其解析为数组:
$scope.parseTags = function(book){
book.tags = book.tags.split(',');
};
在我的HTML中,我有类似的东西:
<div ng-repeat="book in books" ng-init="parseTags(book)">{{book.title}}</div>
有没有办法从$scope.parseTags
函数中获取子范围?而不是每次传递book
?
类似的东西:
$scope.parseTags = function($childScope){
$childScope.tags = $childScope.tags.split(',');
}
<div ng-repeat="book in books" ng-init="parseTags()">{{book.title}}</div>
答案 0 :(得分:1)
parseTags
函数在当前子作用域的上下文中执行。所以parseTags
也可以写成:
$scope.parseTags = function() {
this.book.tags = this.book.tags.split(',');
};
答案 1 :(得分:0)
当你需要使用ng-repeat的属性时,你应该只对特殊情况使用ng-init,我想你最好在控制器中做这种功能。除非有一个非常具体的原因你不能这样做。我没有看到你在html中使用标签,但看起来像过滤器会做的那种功能。
来自angularjs docs:
ngInit的唯一合适用途是对特殊属性进行别名处理 ngRepeat的内容,如下面的演示所示。除了这种情况,你应该 使用控制器而不是ngInit来初始化作用域上的值。