我在同一个控制器中有2个函数,我试图将a值从一个函数传递给另一个函数。但我得到一个错误TypeError:无法读取属性' activeDataset'未定义的
这是我的代码:
angular.module('daModule').controller("Controller1",Controller1);
Controller1.$inject = ['$scope', '$timeout'];
function Controller1($scope, $timeout) {
var ct = this;
ct.datasetName = "demo";
...
ct.activeDataset = function activeDataset(){
return ct.datasetName;
};
}
这是我在同一档案中的另一个功能
function fn1(Controller1) {
...
var currentDataSet = Controller1.activeDataset();
...
}
不知道我哪里出错了。
答案 0 :(得分:0)
这里有一些问题。
一个是在全局名称空间中定义函数Controller1
和fn1
。如果另一个模块使用相同的函数名称,则会出现问题。我们称之为全球名称空间污染,应该避免使用。
第二个问题是在Controller1
中,this
的值直到调用函数后才定义。当它被调用时,它被设置为调用它的本地上下文。在函数调用中将属性附加到this
不会使它们可用作函数的全局属性。这就是为什么你得到'#dat; activeDataset undefined"在fn1
。
回答关于如何在同一范围内的函数之间传递值的问题:函数需要在控制器内部,并且应该将这些值放在$scope
上。
angular.module("myApp").controller("myController", [$scope, myController($scope){
$scope.datasetName = "demo";
$scope.activeDataSet = function(){
return $scope.datasetName;
};
$scope.fn1 = function() {
return $scope.activeDataSet();
};
}]);