私は10秒ごとにJSONパケットを呼び出して変数を更新したい簡単なAngularJSスクリプトを作成しました。プル・データ関数の外に置いておくと動作します。私はapp.controllerの部分を投稿することができ、それは動作します。たとえそれを5回貼り付けて最後のものを変えたとしても。私はここで尋ねたと思った。ここAngularJSはJavaScript関数でng-controllerを更新していません
まずJSONは、私がここで
{"FirstName":"Test","LastName":"Test"}
を引っ張っていているスクリプトコードさ:
<script>
// AngularJS - Init app variable
var app = angular.module("MyApp", []);
// AngularJS - Set default values to AngularJS variables
app.controller("MyCTRL", function ($scope) {
$scope.FirstName = "-";
$scope.LastName = "-";
});
var getJSON = function (url, callback) {
var xhr = new XMLHttpRequest();
xhr.open("get", url, true);
xhr.responseType = "json";
xhr.onload = function() {
var status = xhr.status;
if (status == 200) {
callback(null, xhr.response);
} else {
callback(status);
}
};
xhr.send();
};
function pulldata() {
getJSON("<thejsonurl>",
function (err, data) {
if (err != null) {
//error has happened
} else {
app.controller("MyCTRL", function ($scope) {
$scope.FirstName = data.FirstName;
$scope.LastName = data.LastName;
});
}
});
}
//timer function for loading in page data
function pagetimer() {
setTimeout(function() { pulldata(); pagetimer(); }, 10000); // 10000 = 10 seconds
}
//Pull data as soon as webpage is up
pulldata();
//Start timer for data refresh
pagetimer();
ここでは、HTMLの一部です:
<div ng-app="MyApp" ng-cloak ng-controller="MyCTRL">
FirstName: {{FirstName}}
LastName: {{LastName}}
</div>
だけFYI。 JSON URLが動作していることを確認しました。アラートをすると(data.FirstName);埋め込み関数内で。それは最初の名前を返します。このコードではMyApp部門のFirstNameは更新されません。
AngularJSチュートリアルを読む必要があります。アプリケーションが開始されたら、コントローラを再定義することはできません。 Angularには$ httpサービスがあります。それはあなたが使用すべき$タイムアウトサービスを持っています。コードは、グローバル関数ではなく、角度成分の内側に配置する必要があります。 –
最初にAngularが外国人に見えるかもしれませんが、それをうまく使いたいのであれば、本当にそれを受け入れる必要があります。 JBは絶対に正しいです。簡単で基本的なチュートリアルから始め、基本の学習と理解に焦点を当てます。あなたが現在持っている問題を適切に修正するために現在行っていることには、コアの問題が多すぎます。 –