在父视图中使用视图作为用户控件的单页应用
single page apps using a view as user control in parent views
请帮我解决这个问题。我正在使用durandal 2.0,requirejs,敲除和微风来开发我的水疗应用程序。我有一个视图(选项.html),我想将其用作其他 3 个视图(视图 1.html、视图 2.html 和 视图 3.html)的用户控件。下面是选项视图的内容。
define(['durandal/app', 'services/logger', 'knockout', 'jquery', 'services/unitofwork'], function (app, logger, ko, $, unitofwork) {
var uow = unitofwork.create();
var substatus = ko.observableArray();
var vm = {
status: substatus,
activate: activate,
startDate: ko.observable(),
endDate: ko.observable(),
attached: function (view, parent) {
var startdatepicker = $(view).find('#startdatediv').datepicker();
var enddatepicker = $(view).find('#enddatediv').datepicker();
var starttxt = $(view).find('#txtstartDate');
var endtxt = $(view).find('#txtendDate');
startdatepicker.on('changeDate', function (ev) {
starttxt.text(startdatepicker.datepicker('getAsText'));
if ((date && date.valueOf()) > (endDate && endDate.valueOf())) {
$('#alert').show().find('strong').text('The start date cannot be after the end date');
} else {
$('#alert').hide();
startDate = date;
}
startdatepicker.datepicker('hide');
});
enddatepicker.on('changeDate', function (ev) {
starttxt.text(startdatepicker.datepicker('getAsText'));
if ((date && date.valueOf()) > (endDate && endDate.valueOf())) {
$('#alert').show().find('strong').text('The start date cannot be after the end date');
} else {
$('#alert').hide();
startDate = date;
}
enddatepicker.datepicker('hide');
});
console.log(startdatepicker.html());
console.log(enddatepicker.html());
}
};
return vm;
function activate() {
return true;
}
function fail(error) {
logger.logError(msg, error, "", true);
}
function getPredicate() {
var predicate = new breeze.Predicate.create("LookupId", "==", 1);
console.log(predicate);
return predicate;
}
});
我现在的问题是当我尝试在 3 个父视图之间导航时。似乎我从第一个父视图中的日期选择器中选择的值在其他两个视图中被识别。我如何实现在选项视图中从 3 个不同的父视图导航时具有不同 id 的逻辑。提前谢谢。
您需要的是视图模型之间的通信(父 vm 到选项 vm,反之亦然) 有几种方法
- VM
- 之间的消息传递 - 您可以使用挖空通知或 durandal 消息传递框架在 VM 之间发送消息,因此选项 vm 会刷新其值,但是记住每个 VM 的值会有点复杂,因此父 VM 本身应保存这些值。这使得倾向于我的第二种选择。
- 与其将选项 vm 作为 vm,不如将其用作所有父 vm 中的类。在父视图中,将选项视图添加为模板并将选项对象绑定到其中,这样,每个视图都有一个选项对象,它们是独立的,并且将自己维护其值。
相关文章:
- 用户控件内的 ASP 列表视图.如何在用户控件完全加载后触发 javascript
- 具有多个控件的数据视图
- 清除/重置网格视图中的文件上载控件
- 将重复控件绑定到会话或视图范围变量
- asp.net 网格视图在用户控件中的网格视图时滚动到视图
- Metro Style App:如何从 Web 视图控件中运行的 JavaScript 代码调用 C# 方法
- 获取用户控件网格视图的 ID
- 如何使用 javascript 从网格视图中的动态控件中获取值
- 在父视图中使用视图作为用户控件的单页应用
- 网格视图自定义控件和 JavaScript 函数 c#
- 如何在网格视图中保留控件的状态,并在 asp.net 中分页
- Silverlight 5 xaml 视图中的 Web 浏览器控件使用某些 JavaScript 时出现问题
- 在MVC3中有条件地填充局部视图控件
- 如何根据索引中控件的onchange事件设置mvc 5视图中隐藏字段的值
- 正在删除相关中继器控件的视图状态
- 如何在单击链接按钮时隐藏文本框控件,其中这两个控件都是网格视图的子控件
- Asp.Net树视图控件折叠后未选中子复选框.如何处理这个问题
- 如何在 asp.net 中创建多视图控件并在运行时对其进行操作
- 用Asp.net mvc将控件值传递给在弹出窗口中呈现的部分视图
- 如何将这个jquery方法附加到网格视图中的所有控件