我有一些服务。我想调试它并查看该服务中变量的状态。我的代码如下(代码下方的解释):
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()
from mainController
,所以我希望调试窗口出现在我的屏幕上。我想显示数组current
和数据服务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
工作的?我正确使用了这个?