我在我的指令中使用了一个控制器。我已经在控制器构造函数中声明了一个函数(change(searchAttribute:string)),它将在内部使用过滤器,但我得到运行时异常“这个。$ filter不是函数”。
我在谷歌上有很多例子以同样的方式注入$ filter服务,但我无法弄清楚为什么它对我不起作用。
我的代码:
$oauth = OAuth::consumer('QuickBooks');
$oauth_token = unserialize(file_get_contents(storage_path("tokens/saved_data.txt")));
$storage = $oauth->getStorage();
$storage->storeAccessToken('QuickBooks', $oauth_token['access_token']);
// Check for Quickbooks donor
$result = $oauth->request("/v3/company/" . $oauth_token['company_id'] . "/query?query=SELECT * FROM Customer MAXRESULTS 1", "GET");
return $result;
答案 0 :(得分:1)
您正在尝试将this
用于参考构造函数。但是,在另一个函数中,this
引用了更改函数而不是构造函数。您需要在另一个变量之前使用点构造函数,例如self
。
让我们转到代码:
constructor(public $scope: MyDirectiveScope, public $filter: ng.IFilterService) {
let self = this;
$scope.change = function (searchAttribute) {
$scope.myModel = self.$filter('filter')($scope.myModel, searchAttribute);
};
}
答案 1 :(得分:1)
您可以使用Typescript arrow functions将this
作为上述函数中的类实例上下文:
$scope.change = (searchAttribute) => {
$scope.myModel = this.$filter('filter')($scope.myModel, searchAttribute);
// Here, this refers to your class instance context
};