【发布时间】:2013-12-31 17:22:48
【问题描述】:
我正在使用这个功能(在 SO 上找到)来加载模板:
var loadTemplates = function (list) {
var deferred = new $.Deferred();
var loadedTemplates = [];
ko.utils.arrayForEach(list, function (name) {
$.get("templates/" + name + ".html", function (template) {
$("body").append("<script id=\"" + name + "\" type=\"text/html\">" + template + "<\/script>");
loadedTemplates.push(name);
if (list.length === loadedTemplates.length) {
deferred.resolve(true);
}
});
});
return deferred.promise();
}
我是这样称呼它的:
loadTemplates(['template1','template2']).then(function () {
$.publish("templates_loaded");
})
我在包含的 js 文件中成功订阅了 templates_loaded,但现在我想在模板中包含一些 js。这是我所拥有的:
<div id="test" data-bind="text: alarmIDs().length">Test</div>
<script>
$.subscribe("templates_loaded", function () {
alert('test');
});
</script>
这里是模板绑定:
<span data-bind="template: 'template1'"></span>
我确实看到了“测试”元素,但它从不触发警报。
我怎样才能做到这一点?
【问题讨论】:
-
你可以为此写on('change',function(){});吗?
标签: javascript jquery publish-subscribe