私はいくつかのサービスを持っています。デバッグして、このサービスの変数の状態を確認したいです。私のコードは以下です(コードの下の説明):
module.factory('Data', function () {
var current = [], unlocked = [], all = [];
return {
current: current,
unlocked: unlocked,
total: all
}
});
module.controller('debugPlaneController', ['$scope', 'Data', function ($scope, data) {
$scope.data = data;
}]);
module.factory('someService', ['Data', function (data) {
var initDebugMode = function () {
var style = "style='width: 500px; height: 100px; background-color: #ccc;";
var template = "
<div "+style+" ng-controller='debugPlaneController'>
<p>data.current = {{ data.current }}</p>
<p>data.total = {{ data.total }}</p>
<p>data.unlocked= {{ data.unlocked }}</p>
</div>
";
$(".someClass > .childClassOfSomeClass").append(template);
};
// some more methods, for example
var push = function (name) {
data.current.push(name);
data.all.push(name);
}
// etc
return {
initDebug: initDebugMode,
push: push
// some more methods
}
}]);
module.controller('mainController', ['$scope', 'someService', function($scope, someService) {
someService.initDebug();
someService.push('lala');
});
だから、私はコントローラを持ついくつかのアプリを持っていますmainController
。その中でサービスを利用したいsomeService
。push
メソッドを使用しています。name
このメソッドは、引数からデータ サービスtotal
のcurrent
配列にデータをプッシュしますData
。initDebug()
ご覧のとおり、からメソッドを呼び出しmainController
たので、画面にデバッグ ウィンドウを表示します。current
arraysとdata-serviceの状態total
を表示したい。unlocked
Data
実際には、ウィンドウが画面に表示されますが、次のように表示されます。
data.current = {{ data.current }}
data.total = {{ data.total }}
data.all = {{ data.all }}
そのため、AngularJS テンプレートは補間されませんでした。それらを補間する方法+このブロックでそれらをライブ更新する必要があります(angularJSが実際に行うように)。
アップデート
$コンパイルを使用します。
だから私は自分のinitDebugMode
機能をこのように変更する必要がありますか?:
module.factory('someService', ['Data', '$compile', function (data, $compile) {
var initDebugMode = function () {
var style = "style='width: 500px; height: 100px; background-color: #ccc;";
var scopeImitation = { data: data };
var template = "
<div "+style+" ng-controller='debugPlaneController'>
<p>data.current = {{ data.current }}</p>
<p>data.total = {{ data.total }}</p>
<p>data.unlocked= {{ data.unlocked }}</p>
</div>
";
$compile(template)(scopeImitation);
$(".someClass > .childClassOfSomeClass").append(template);
};
// etc...
]);
$compile
サービスの2 番目のブラケットに変数を正確に渡すにはどうすればよいですか? 私はこれを正しく使用しましたか?