我在1.6.x中编写angularjs应用程序...而且我遇到了component()的问题,其中$ onInit()看不到任何var定义...
每个var都是未定义的
这是我的代码..
"close"
提前谢谢你......
答案 0 :(得分:2)
当你输入$ onInit函数(){}时,现在引用$ onInit,因此它成为允许传入控制器的变量的问题。
我知道很多人根据你在控制器第一行学到的东西声明vm或ctrl。
即
var ctrl = this;
ctrl.service = carFactory;
ctrl.$onInit = function() {
console.log(ctrl.service);
}
答案 1 :(得分:0)
使用Angular 1.6时,将忽略在控制器中的方法外定义的变量。您还应该在控制器中的对象this
上定义所有方法。
angular.module('carFilter', []).
component('carFilter', {
controller: function (carFactory, $http) {
this.$onInit = function () {
this.service = carFactory;
this.updatedObj = {};
this.testing = 'a';
console.log(this.service);
this.loadFilter().then(function (result) {
this.updateFilter(result)
}.bind(this);
};
this.loadFilter = function() {
//$http here to return promise
};
this.updateFilter = function (responseData) {
this.updatedObj = responseData;
};
},
templateUrl: 'someURL'
});
答案 2 :(得分:0)
在函数this
中引用任何一个对象调用该函数,这不一定是你的组件。
要确保this
中的$onInit
对象引用您的组件,您可以将其明确绑定到组件this
:
this.$onInit = function () {
...
};
this.$onInit.bind(this);
或将变量设置到您的组件this
并使用闭包在$onInit
中访问它:
var vm = this;
this.$onInit = function () {
vm.testing = 'a';
console.log(vm.service); //th
loadFilter().then(function (result) {
updateFilter(result)
});
};
updateFilter
功能也是如此。