gpt4 book ai didi

javascript - 迪兰达尔。将附加数据传递给其他 View

转载 作者:行者123 更新时间:2023-11-30 17:59:23 25 4
gpt4 key购买 nike

我有一个需要有条件地填充的 View 。

场景:经理将在屏幕 B 上选择一个用户名,然后将导航到用户在 EG 中填写的相同表单。屏幕 A,不同之处在于所述经理可以选择批准或拒绝用户的请求。

我已经在屏幕 A 上的 VM 中看到我可以执行以下操作。

var vm = {
activate: function (data) {
console.log(data);

var id = data.id || -1;

if (id !== -1) {
router.isNavigating(true);
http.json('/api/user/'+ id )
.done(function (response) {
ko.viewmodel.updateFromModel(vm.userInfo, response);
router.isNavigating(false);
});
}
}
};

然后是B( View & View 模型)

查看

 <table>
<thead>
<tr>
<td>User</td>
<td>Date Requested</td>
<td>Action</td>
</tr>
</thead>
<tbody>
<tr>
<td>Mike</td>
<td>19 Jun 2013
</td>
<td>
<input type="button" value="Go" data-bind="click: function() { buttons.goTo(6) }" />
</td>
</tr>
</tbody>
</table>

View 模型

define(['durandal/plugins/router'], function (router) {
var buttons = {
goTo: function (id) {
console.log('goTo clicked');

//this does work in conjunction with my code on B
router.navigateTo('#/userinfo?id=' + id);
}
};

var vm = {
buttons: buttons
};

return vm;
});

我的问题是我不确定让 Durandal 从 B 导航到页面 A 的最佳方式/或方法是什么...我做的对吗?因为感觉有点“hacky”

最佳答案

导航,至少对我来说,是为了模仿标准的 MVC 网络导航而设计的。在这种情况下,既然你已经知道你想去 6,为什么不使用像这样的 anchor

<a href="#/userinfo?id=6"/>

更好的方法是使用 id splat 注册你的路线,这样你的路线就会变成

routes.map({route: 'userinfo/:id, ...
<a href="#/userinfo/6" />

通过这种方式,您可以访问激活方法上的 splat。那里有几个示例,但我没有指向它们的链接。基本上,您的 userinfo viewmodel 的 activate 方法将接受一个参数,您可以从那里加载一个实体或任何您喜欢的东西。希望这会有所帮助。

布拉德

关于javascript - 迪兰达尔。将附加数据传递给其他 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com