【发布时间】:2014-07-23 17:17:49
【问题描述】:
我正在用 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
};
我重新安排了这些函数的工作方式,现在只需将标题传递给不同的函数。这完成了我想要的工作,但仍然无法解决手头的最初问题——我将如何从对象内部访问对象的一部分?
【问题讨论】:
-
这可能不是一个好主意。你可以不做服务或工厂吗?使其成为服务/工厂将允许您轻松注入其他可能在未来有用的服务/工厂。例如 localStorageService...
-
你的html代码是什么样子的?是否在 ng-repeat 中?
-
这用于通过 ng-repeat 生成一些按钮。单击按钮时会调用过滤器函数,该按钮不会加载新视图,而是更改过滤器并重新排列相应的表格。此信息本身不需要超出其控制器,但我正试图将标题从这里获取到工厂,以便可以在其他地方使用。 (试图将它传递到我的过滤器工厂。)
-
我已经用我的 HTML 代码更新了这个问题。
-
Filters.setFilter函数包含什么?
标签: javascript angularjs object