如何在Knockout弹出框模板中获取用户名?
在Knockout的editTemplate模板中获取用户名的方法
嘿,我来帮你搞定这个问题~其实核心就是让模板能访问到包含用户名的ViewModel上下文,具体步骤如下:
第一步:确保ViewModel里有可观察的用户名属性
首先你的ViewModel得定义好用户名的可观察变量,这样Knockout才能追踪它的变化并渲染到模板里,比如:function UserVM() { const self = this; self.userName = ko.observable("你的用户名"); // 其他业务属性和方法... } // 实例化ViewModel const userVM = new UserVM(); ko.applyBindings(userVM);第二步:在editTemplate模板中直接绑定用户名
因为模板会继承绑定上下文,所以直接用Knockout的绑定语法就能获取到用户名了。比如用text绑定:<script type="text/html" id="editTemplate"> <div class="popover-content"> <p>当前用户:<span data-bind="text: userName"></span></p> <!-- 如果你的Knockout版本支持插值语法,还可以这样写 --> <!-- <p>当前用户:${userName}</p> --> </div> </script>第三步:确保popover初始化时传递正确的绑定上下文
如果你是用Bootstrap popover结合Knockout,初始化popover的时候要把ViewModel实例作为模板的渲染上下文,这样模板才能找到userName属性。比如自定义一个popover绑定:ko.bindingHandlers.popover = { init: function(element, valueAccessor) { const opts = ko.unwrap(valueAccessor()); $(element).popover({ html: true, content: () => { // 用Knockout渲染模板,传入ViewModel作为上下文 return ko.renderTemplate('editTemplate', opts.viewModel, {}, null, 'html'); } // 其他popover配置项,比如title、placement等 }); } };然后在HTML里使用这个绑定:
<button data-bind="popover: { viewModel: userVM }">打开编辑弹窗</button>
这样一来,当popover弹出时,模板里就能正确显示用户名啦~
内容的提问来源于stack exchange,提问作者Red Devil
相关产品推荐
相关产品推荐

