1
AngularJsとJavaScriptを試している間に、JavaScriptの外部関数から$scope
を呼び出そうとしましたが、 :
"Uncaught TypeError: Cannot read property 'message' of undefined" .
は、ここに私のコードです:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title></title>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script>
var app = angular.module('app', []);
var msg = "new message"
app.controller('ctrl', ['$scope', function ($scope) {
$scope.message = msg;
}]);
function xfunc(){
var data = angular.
element(document.querySelector('[ng-controller="ctrl"]')).
scope().message;
return data
}
if (typeof 'xfunc()' !== 'undefined') {
console.log(xfunc());
}else{
console.log("the type of is : ", + typeof 'xfunc()')
}
</script>
</head>
<body>
<div ng-app="app" ng-controller="ctrl">
{{message}}
</div>
</body>
</html>
私はコンソールからxfunc()
を呼び出していたし、それがエラーなしで正常に動作します。
エラーの原因をご存じですか?サードパーティのライブラリを持たない純粋なJavascriptとAngularJSだけでも可能ですか? (もちろん可能な場合)
ありがとうございます!
コンソールで正常に動作する場合は、AngularJSがブートストラップされる前に関数を呼び出すと思います。それを待たなければなりません。さもなければ、オブジェクトプロパティはまだ利用できません。 – user3492940
あなたの答えをありがとう、私はあなたがそれについて完全に正しいと思いますが、問題はAngularJsをブートストラップに待つ方法です? – user2245788
はい、 "setTimeout(function(){console.log(xfunc());}、3000);"より効率的な構文があるのだろうか? PS:ありがとう! – user2245788