Açısal bileşen bileşenini kullanmak isterim, ancak bir şey yanlış görünüyor. Bir süre bu kodu kontrol ettim. Yazım hatası yok, belgelere uyuyor gibi görünüyor, ancak hala çalışmıyor.
checked var, Açısal 1.5.3 yüklendi.
Konsolda çıkış yok. documentation ve this blog girişine göre "onInit" metnini görmeliyim.
Bileşenin şablonu doğru şekilde görüntüleniyor ve şablonun yüklü olduğunu görebiliyorum, ancak denetleyicinin başlatılmadığı/tetiklenmediği anlaşılıyor.
Uygulamam, Typescript'te yazılmıştır.
bileşeni:
module sayusiando.dilib.spa {
export class LeftHandMenuComponent implements ng.IComponentOptions {
public transclude: boolean = false;
public controller: Function = LeftHandMenuController;
public controllerAs: string = "vm";
public templateUrl: string = "app/layout/leftHandMenu/leftHandMenuTemplate.html";
}
angular
.module("dilib")
.component("dilibLeftHandMenu", new LeftHandMenuComponent());
}
derlenmiş kod:
var sayusiando;
(function (sayusiando) {
var dilib;
(function (dilib) {
var spa;
(function (spa) {
var LeftHandMenuComponent = (function() {
function LeftHandMenuComponent() {
this.transclude = false;
this.controller = spa.LeftHandMenuController;
this.controllerAs = "vm";
this.templateUrl = "app/layout/leftHandMenu/leftHandMenuTemplate.html";
}
return LeftHandMenuComponent;
})();
spa.LeftHandMenuComponent = LeftHandMenuComponent;
angular
.module("dilib")
.component("dilibLeftHandMenu", new LeftHandMenuComponent());
})(spa = dilib.spa || (dilib.spa = {}));
})(dilib = sayusiando.dilib || (sayusiando.dilib = {}));
})(sayusiando || (sayusiando = {}));
Düzeni şablonu:
<div>
<dilib-left-hand-menu class="col-lg-2"></dilib-left-hand-menu>
</div>
LeftHandMenuController:
module sayusiando.dilib.spa {
"use strict";
export interface ILeftHandMenuController {
}
export class LeftHandMenuController implements ILeftHandMenuController {
$onInit: Function = (() => {console.log("onInit");});
static $inject = ["LeftHandMenuService"];
constructor(leftHandMenuService: sayusiando.dilib.spa.ILeftHandMenuService) {
console.log("con");
this.leftHandMenuService = leftHandMenuService;
//this.activate();
console.log("construct");
}
activate() { //activate logic }
}
angular
.module('dilib')
.controller('leftHandMenuController', LeftHandMenuController);
}
Derleyen kontrolör kodu:
var sayusiando;
(function (sayusiando) {
var dilib;
(function (dilib) {
var spa;
(function (spa) {
"use strict";
var LeftHandMenuController = (function() {
function LeftHandMenuController(leftHandMenuService) {
this.$onInit = (function() { console.log("onInit"); });
console.log("con");
this.leftHandMenuService = leftHandMenuService;
//this.activate();
console.log("construct");
}
LeftHandMenuController.prototype.activate = function() {
var _this = this;
this.leftHandMenuService.getLeftHandMenu()
.then(function (result) {
_this.leftHandMenu = result;
});
};
LeftHandMenuController.$inject = ["LeftHandMenuService"];
return LeftHandMenuController;
})();
spa.LeftHandMenuController = LeftHandMenuController;
angular
.module('dilib')
.controller('leftHandMenuController', LeftHandMenuController);
})(spa = dilib.spa || (dilib.spa = {}));
})(dilib = sayusiando.dilib || (sayusiando.dilib = {}));
})(sayusiando || (sayusiando = {}));
Teşekkür: Burada düzgün, iyi çalışan koddur! Bunun problem olduğunu düşünmüyorum. Bu bileşen, diğer bileşenleri de kullandığım daha büyük bir uygulamanın bir parçasıdır. Bu probleme rastlamamın sebebi, zaten var olan bileşenlerin kontrolörlerini kullanmam. Şimdiye kadar, bileşenler uygulamanın düzenini oluşturuyor. – SayusiAndo
Ayrıca, düzen şablonunda ng-controller yönergesinin kullanımını göremiyorum. Onu başka bir yere şablonla ilişkilendiriyor musunuz? – Rakesh
Belgeden geçtim ve denetleyicinin doğrudan çağırdığı bir örnek yok. – SayusiAndo