Javascript 在热毛巾/Durandal单页应用程序中加载(激活)视图时调用功能
我正在使用热毛巾SPA项目,我试图在激活视图时调用一个简单的js函数。我看到的是,调用activate函数时,似乎没有加载该项 我还尝试将代码放入由activate调用的初始化函数中,正如其他SO帖子所建议的那样。这似乎没有帮助 那么,在Durandal/Hottown中,在视图加载时调用函数的推荐方法是什么 home.js(视图模型) home.html(视图)Javascript 在热毛巾/Durandal单页应用程序中加载(激活)视图时调用功能,javascript,html,single-page-application,durandal,hottowel,Javascript,Html,Single Page Application,Durandal,Hottowel,我正在使用热毛巾SPA项目,我试图在激活视图时调用一个简单的js函数。我看到的是,调用activate函数时,似乎没有加载该项 我还尝试将代码放入由activate调用的初始化函数中,正如其他SO帖子所建议的那样。这似乎没有帮助 那么,在Durandal/Hottown中,在视图加载时调用函数的推荐方法是什么 home.js(视图模型) home.html(视图) 测试 当durandal附加视图模型时,它会在该模型上查找viewAttached方法。我在下面修改了你的代码。它应该可以找到
测试
当durandal附加视图模型时,它会在该模型上查找viewAttached
方法。我在下面修改了你的代码。它应该可以找到您正在寻找的jQuery元素
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
viewAttached: viewAttached
title: 'Home'
};
return vm;
function activate() {
logger.log('Home View Activated', null, 'home', true);
}
function viewAttached(view) {
$(view).find("#backBtn").hide();
console.log($(view).find("#myBtn").html());
}
});
查看底部的作文页面,了解更多关于viewAttached
。
根据位于的Durandal文档,视图模型有4个回调,它们可以实现以与DOM元素交互,每个回调都传递一个表示视图的
doElement
:
getView
beforeBind
afterBind
viewAttached
viewAttached
是最常用的钩子。有关每个回调的详细说明,请参阅文档。您可以在列表底部的表格中看到完整的生命周期
定义(['services/logger'],函数(logger){
var vm={
激活:激活,
getView:getView,
beforeBind:beforeBind,
后绑定:后绑定,
viewAttached:viewAttached,
标题:“家”
};
返回虚拟机;
函数activate(){
log('Home View Activated',null,'Home',true);
返回init();
}
函数getView(视图){
}
函数beforeBind(视图){
}
函数后绑定(视图){
}
功能视图已附加(视图){
$(“#backBtn”).hide();
console.log($(“#myBtn”).html();//返回未定义的
}
});
根据位于的最新Durandal文档,viewAttached重命名为attached,因此您可以使用Durandal 2编码如下:
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
attached: attached
title: 'Home'
};
return vm;
function activate() {
logger.log('Home View Activated', null, 'home', true);
}
function attached(view, parent) {
$(view).find("#backBtn").hide();
console.log($(view).find("#myBtn").html());
}
});
还可以查看docs页面。谢谢你们两个!由于Durandal的变化,这个答案不再正确。viewAttached函数不再被调用。此外,指向文档的链接也已断开。请更新您的答案。如文档中所述,
viewsattached
回调挂钩已替换为attached
。这是durandal 2.0的一个不错的更新答案,正如您正确指出的,其他人都适用于2.0之前的版本
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
viewAttached: viewAttached
title: 'Home'
};
return vm;
function activate() {
logger.log('Home View Activated', null, 'home', true);
}
function viewAttached(view) {
$(view).find("#backBtn").hide();
console.log($(view).find("#myBtn").html());
}
});
define(['services/logger'], function (logger) {
var vm = {
activate: activate,
attached: attached
title: 'Home'
};
return vm;
function activate() {
logger.log('Home View Activated', null, 'home', true);
}
function attached(view, parent) {
$(view).find("#backBtn").hide();
console.log($(view).find("#myBtn").html());
}
});