Angular js 1.7 $onInit 函数语法
Angular js 1.7 $onInit function syntax
我最近将我的应用程序从 angularjs 1.5.9 更新到 angularjs 1.7.9。在我的一个控制器中,我有以下代码:
angular.module( 'myModule' )
.component( 'dynamicContent', {
bindings: {
pageTitle: '<',
content: '<',
type: '<',
width: '<'
},
templateUrl: 'path/to/html/file',
controllerAs: 'dynamic',
controller: function( $state, $window, Contentful ) {
var vm = this;
vm.$onInit = _init();
function _init() {
vm.items = _.map( vm.content, mapContent );
}
更新到 1.7.9 后,vm.items 变量从未被定义,因为 vm.content 在 _init 函数中未定义。但是,将代码更改为...
angular.module( 'myModule' )
.component( 'dynamicContent', {
bindings: {
pageTitle: '<',
content: '<',
type: '<',
width: '<'
},
templateUrl: 'path/to/html/file',
controllerAs: 'dynamic',
controller: function( $state, $window, Contentful ) {
var vm = this;
vm.$onInit = function _init() {
vm.items = _.map( vm.content, mapContent );
}
现在可以了。任何人都可以解释 为什么 定义我将其设置为 $onInit 的函数使它起作用?谢谢!
vm.$onInit = _init();
这等同于简单的 _init();
,你的意思可能是 vm.$onInit = _init
。
在 1.5 中你可以 运行 自己初始化并且没有真正的区别,但是在最新的 Angularjs 中绑定是在你的控制器主函数之后,但在初始化之前设置的,例如:
bindings: { test: '<'}
controller: () => {
var vm = this;
console.log(vm.test); // undefined
vm.$onInit = () => {
console.log(vm.test); // has value
}
}
我最近将我的应用程序从 angularjs 1.5.9 更新到 angularjs 1.7.9。在我的一个控制器中,我有以下代码:
angular.module( 'myModule' )
.component( 'dynamicContent', {
bindings: {
pageTitle: '<',
content: '<',
type: '<',
width: '<'
},
templateUrl: 'path/to/html/file',
controllerAs: 'dynamic',
controller: function( $state, $window, Contentful ) {
var vm = this;
vm.$onInit = _init();
function _init() {
vm.items = _.map( vm.content, mapContent );
}
更新到 1.7.9 后,vm.items 变量从未被定义,因为 vm.content 在 _init 函数中未定义。但是,将代码更改为...
angular.module( 'myModule' )
.component( 'dynamicContent', {
bindings: {
pageTitle: '<',
content: '<',
type: '<',
width: '<'
},
templateUrl: 'path/to/html/file',
controllerAs: 'dynamic',
controller: function( $state, $window, Contentful ) {
var vm = this;
vm.$onInit = function _init() {
vm.items = _.map( vm.content, mapContent );
}
现在可以了。任何人都可以解释 为什么 定义我将其设置为 $onInit 的函数使它起作用?谢谢!
vm.$onInit = _init();
这等同于简单的 _init();
,你的意思可能是 vm.$onInit = _init
。
在 1.5 中你可以 运行 自己初始化并且没有真正的区别,但是在最新的 Angularjs 中绑定是在你的控制器主函数之后,但在初始化之前设置的,例如:
bindings: { test: '<'}
controller: () => {
var vm = this;
console.log(vm.test); // undefined
vm.$onInit = () => {
console.log(vm.test); // has value
}
}