class AdminHomeController {
private config1; // I tried different variations here but none worked
public config2; //
constructor(
private $scope: IAdminHomeControllerScope
) {
this.config = $scope.config; // << this works
}
static $inject = [
'$scope'
];
configChanged = (clear) => {
this.config.clear();
};
}
Mã này hoạt động và this.config
có tất cả các phương pháp tôi cần. Tuy nhiên, có cách nào mà tôi có thể xóa nhu cầu cho số this
không? Những gì tôi muốn có thể làm là viết mã như sau:
configChanged = (clear) => {
config.clear();
};
Tôi đã thử với nhiều biến thể khác nhau nhưng tôi không thể làm cho nó hoạt động.
Dưới đây là một ví dụ về mã cùng trước khi chuyển sang nguyên cảo:
angular.module('admin')
.controller('AdminHomeController', [
'$http',
'$q',
'$scope',
'utilityService',
adminHomeController]);
function adminHomeController(
$http,
$q,
$scope,
utilityService
) {
var app = $scope.app;
var config = app.config;
var home = this;
var util = utilityService;
home.autoSave = false;
home.data = {};
home.entityType = null;
home.forms = { grid: null, modal: null };
home.grid = { view: [], data: [] };
home.modal = { visible: false };
home.row = {};
home.rowSelected = null;
home.configChanged = function (clear) {
config.put();
if (clear) {
home.grid.backup = [];
home.grid.data = [];
}
};
tại sao? . . .. . – djechlin
Vâng trước khi tôi đã sử dụng javascript chỉ giải pháp của tôi trông sạch sẽ. Bây giờ các giải pháp có từ "này" ở phía trước của hầu hết các cuộc gọi chức năng. Trong một số trường hợp, tôi có gần 100 cuộc gọi hàm tìm kiếm theo cách này. –
Việc bỏ 'điều này' sẽ làm cho mã của bạn có ý nghĩa khác trong JavaScript. Đây không phải là Java hoặc C# hoặc C++ ... –