我会尝试尽可能地简化这个问题,
但我需要我的handlebar.js' {{input value =" searchTerm"}}将searchTerm的值设置为' null'每次网址更改。
上述输入旨在自动过滤同一页面上的列表。输入输入会自动更新' searchTerm'对任何打字的
值searchTerm在此操作中定义,名为searchResults
这是控制器中的属性:
searchResults: function() {
var searchTerm = this.get('searchTerm');
var regExp = new RegExp(searchTerm, 'i');
// We use `this.filter` because the contents of `this` is an array of objects
var filteredResults = this.filter(function(category) {
return regExp.test(category.get('categoryName'));
});
return filteredResults;
}.property('@each.categoryName', 'searchTerm'),
所以要打破我的需要:
searchTerm
的当前值是什么,都需要将其设置为' ' 答案 0 :(得分:2)
这可以通过didTransition
或willTransition
事件处理程序在路由上完成。路由引用了他们的controller
(通过this.controller
),你仍然可以通过controllerFor
获取它(例如:var c = this.controllerFor('controllerName')
;所以你可以做这样的事情:
App.SomeRouteThatErasesTheSearchTermRoute = Ember.Route.extend({
actions: {
// you could implement with didTransition. No arguments for didTransition tho
didTransition: function() {
this.controller.set('searchTerm', '');
},
// OR, implement with willTransition
willTransition: function(transition) {
this.controller.set('searchTerm', '');
}
}
});
你也可以将它作为一个单独的方法来实现,它被解雇on('willTransition')
,所以你保留任何现有的处理程序,只需附加你的处理程序。然后你可以将它变成mixin以供其他路由使用,或者其他路由可以从这个类继承,而不会破坏任何其他自定义转换处理程序(如果有的话)。