AngularJS 组件定义为函数
AngularJS Component define as function
当我使用返回 component 对象的函数创建组件时,我的组件未初始化!我正在分享这两种情况。有人可以解释一下它们之间有什么区别吗?
Html:
<div ng-app="demoApp">
<navbar></navbar>
</div>
工作代码:Fiddle
var NavbarTemplate = `<button ng-click="$ctrl.clickTest()">Click Test</button>`;
var navbar = {
controller: function() {
this.clickTest = clickTest;
function clickTest() {
alert("hello");
}
},
template: NavbarTemplate
};
angular.module('demoApp', []).component('navbar', navbar);
错误(无错误)代码:Fiddle
function getComponent(){
var template = `<button ng-click="$ctrl.clickTest()">Click Test</button>`;
var component = {
controller: function() {
this.clickTest = clickTest;
function clickTest() {
alert("hello");
}
},
template: template
}
return component;
}
angular.module('demoApp', []).component('navbar', getComponent);
您需要在作为参数传递到最后一行的 getComponent
中添加括号,如下所示:
angular.module('demoApp', []).component('navbar', getComponent());
简单地使用 getComponent
(不带括号)将对 getComponent
函数的引用传递给 component()
而不执行它。但是,angular 需要一个包含您的组件配置的对象。
因此,传递 getComponent()
调用函数和 returns 组件配置对象将所述配置对象传递给 angular component()
初始化程序而不是对函数的引用 getComponent
.
当我使用返回 component 对象的函数创建组件时,我的组件未初始化!我正在分享这两种情况。有人可以解释一下它们之间有什么区别吗?
Html:
<div ng-app="demoApp">
<navbar></navbar>
</div>
工作代码:Fiddle
var NavbarTemplate = `<button ng-click="$ctrl.clickTest()">Click Test</button>`;
var navbar = {
controller: function() {
this.clickTest = clickTest;
function clickTest() {
alert("hello");
}
},
template: NavbarTemplate
};
angular.module('demoApp', []).component('navbar', navbar);
错误(无错误)代码:Fiddle
function getComponent(){
var template = `<button ng-click="$ctrl.clickTest()">Click Test</button>`;
var component = {
controller: function() {
this.clickTest = clickTest;
function clickTest() {
alert("hello");
}
},
template: template
}
return component;
}
angular.module('demoApp', []).component('navbar', getComponent);
您需要在作为参数传递到最后一行的 getComponent
中添加括号,如下所示:
angular.module('demoApp', []).component('navbar', getComponent());
简单地使用 getComponent
(不带括号)将对 getComponent
函数的引用传递给 component()
而不执行它。但是,angular 需要一个包含您的组件配置的对象。
因此,传递 getComponent()
调用函数和 returns 组件配置对象将所述配置对象传递给 angular component()
初始化程序而不是对函数的引用 getComponent
.