我正在Angular中编写一个应用程序,有类似的东西:
$scope.items = [
{'name':'someName',
'title': 'someTitle',
'filter': function(item){
Filters.setTableTitle(this.title); //cannot get title
...
}
},
{'name':'someName',
'title': 'someTitle',
'filter': function(item){
Filters.setTableTitle(this.title);
...
}
}
];
一组对象。每个对象的一部分是一个函数,在函数内部我想调用一个函数来抓取该对象本身的标题,以便将其传递给应用程序其余部分的更大范围。
但是,我无法获取每个对象的标题。
我如何访问标题才能在此处使用?
感谢。
更新
这是我的HTML使用(非常类似于)上面的代码。我正在使用代码创建按钮。
<p ng-repeat="link in items">
<block class="button" href="{{link.URL}}" title="{{link.title}}">
<a class="hrefLink" href="{{link.URL}}" ng-click="Filters.setFilter(link.filter, link.title)">
{{link.name}}
</a>
</block>
</p>
每个对象的filter
部分中保存的函数返回的信息随后会传递到更新DOM的Filters.setFilter()
。
Filters.setFilter()
service.setFilter = function(filter, title){
service.searchTerm = '';
$spMenu.hide(); //close nav if open
service.selectedFilter = filter;
service.setTableTitle(title); //this does the job
};
我已经重新安排了这些功能的工作方式,现在只需将标题传递给不同的功能。这可以完成我想要的工作,但仍然无法解决手头的初始问题 - 如何从对象内部访问对象的一部分?
答案 0 :(得分:0)
我不太了解Angular,所以肯定会有更好的灵魂。
如果您自己调用此函数,请按以下方式编写:
$scope.items[x].filter(item);
如果它在其他地方被调用且this
没有包含正确的对象,您可以枚举所有对象并将函数绑定到它:
for (var i = 0; i < $scope.items.length; ++i) {
var item = $scope.items[i];
item.filter = item.filter.bind(item);
}
编辑:
你有两个选择。首先,您可以在HTML中绑定函数:
<p ng-repeat="link in items">
<block class="button" href="{{link.URL}}" title="{{link.title}}">
<a class="hrefLink" href="{{link.URL}}" ng-click="Filters.setFilter(link.filter.bind(link))">
{{link.name}}
</a>
</block>
</p>
或者您可以编辑功能为您执行此操作:
<p ng-repeat="link in items">
<block class="button" href="{{link.URL}}" title="{{link.title}}">
<a class="hrefLink" href="{{link.URL}}" ng-click="Filters.setFilter(link)">
{{link.name}}
</a>
</block>
</p>
service.setFilter = function(link){
service.searchTerm = '';
$spMenu.hide(); //close nav if open
service.selectedFilter = link.filter.bind(link);
};