我真的很困惑,我不知道到底发生了什么!
.directive("blGraph", ['$http', function($http) {
return {
restrict: 'EA',
scope: {
botid: "=blGraph"
},
link: function(scope, element, attr) {
console.log(scope, scope.botid);
}
};
}]);
结果,
如图所示, botid 存在于范围中,但当我尝试通过scope.botid
获取它时,它告诉它不是的定义!
答案 0 :(得分:1)
在范围变量上加上$ watch。控制将在手表处理程序功能中进行两次。你会看到发生了什么。 你的HTML标记是什么,可能是你绑定到undefined。
答案 1 :(得分:1)
由于运行控制器和链接函数的顺序,您需要使用$ timeout以允许变量加载到作用域。以下是我如何解决它:
controller: function($scope, $timeout) {
$timeout(function(){
console.log($scope.myVariable)
},0);
}
答案 2 :(得分:0)
最有可能的是,scope.botid
在打印时未定义,并且是在console.log语句之后定义的。
在对象上使用console.log时,它会在JS执行结束时显示对象的状态。
请尝试以下方法,而不是仅在console.log语句中使用范围:
console.log(JSON.stringify(scope), scope.botid);