Internet explorer 淘汰赛

Internet explorer 淘汰赛,internet-explorer,knockout.js,Internet Explorer,Knockout.js,有人能帮我吗 基本上,我有一个带有子项的项列表。当选中某个项目(复选框)时,我有一个bindingHandlers,它会自动检查匹配的项目并勾选复选框 这适用于Chrome、FF和IE>9,但不适用于IE 7或8。勾选复选框后,它将保持未勾选状态,BindingHandler自动勾选的复选框无法取消勾选 我的第二个问题是,当子项(例如:在我的数据示例中,行)映射到表单时,如何为子项设置isDirty标志。这可能吗 抱歉,希望在jsfiddle.net中发布代码,但无法使其正常工作:( 还有,有没

有人能帮我吗

基本上,我有一个带有子项的项列表。当选中某个项目(复选框)时,我有一个bindingHandlers,它会自动检查匹配的项目并勾选复选框

这适用于Chrome、FF和IE>9,但不适用于IE 7或8。勾选复选框后,它将保持未勾选状态,BindingHandler自动勾选的复选框无法取消勾选

我的第二个问题是,当子项(例如:在我的数据示例中,)映射到表单时,如何为子项设置isDirty标志。这可能吗

抱歉,希望在jsfiddle.net中发布代码,但无法使其正常工作:(

还有,有没有更好的方法来实现我的目标

非常感谢

更新

我已经成功地将代码放到了JSFIDLE上

我所要做的就是选中复选框(仅选中)时,根据某些条件查找匹配项并将其标记为选中,然后在与IE 7一起使用的表单上显示子项。在子项上使用isDirty标志将是额外的。

HTML

<table>
    <tr>
        <td valign="top">
            <table>
                <thead>
                    <tr>
                        <td></td>
                        <td>Id</td>
                        <td>Name</td>
                    </tr>
                </thead>
                <tbody data-bind="foreach: users">
                    <tr data-bind="attr: { id: ('user-' + id()) }">
                        <td>
                            <input type="checkbox" data-bind="attr: { value: id(), id: id() }, checked: isSelected, SelectRelatedUsers: Name, event:{'change' : $parent.selectUser }" /></td>
                        <td class="quiet"><span data-bind="text: id"></span></td>
                        <td class="quiet">
                            <a href="#" class="tag-ts" data-bind="text: Name, click: $parent.selectUser"></a>
                        </td>

                    </tr>
                </tbody>
            </table>
        </td>
        <td valign="top">


            <table data-bind="with: selectedUser, visible: selectedUser() !=null" style="border: 1px solid #ccc">

                <thead>
                    <th>Day</th>
                    <th>isDirty</th>

                </thead>

                <tbody data-bind="foreach: Lines">

                    <tr>
                        <td>Mon</td>
                        <td>
                            <input class="input-small" type="text" data-bind="value: Mon" />
                        </td>
                  <!--       <td data-bind="text: dirtyFlag.isDirty() ? 'Yes' : 'No'"> -->
                    </tr>
                    <tr>
                        <td>Tue</td>
                        <td>
                            <input class="input-small" type="text" data-bind="value: Tue" />
                        </td>
                         <!--  <td data-bind="text: dirtyFlag.isDirty() ? 'Yes' : 'No'"> -->
                        <tr>
                            <td>Wed</td>
                            <td>
                                <input class="input-small" type="text" data-bind="value: Wed" />
                            </td>
                             <!--  <td data-bind="text: dirtyFlag.isDirty() ? 'Yes' : 'No'"> -->
                            <tr>
                                <td>Thu</td>
                                <td>
                                    <input class="input-small" type="text" data-bind="value: Thu" />
                                </td>
                           <!--     <td data-bind="text: dirtyFlag.isDirty() ? 'Yes' : 'No'"> -->
                                <tr>
                                    <td>Fri</td>
                                    <td>
                                        <input class="input-small" type="text" data-bind="value: Fri" />
                                    </td>
                                  <!--    <td data-bind="text: dirtyFlag.isDirty() ? 'Yes' : 'No'"> -->
                                </tr>
                    <tr>
                        <td colspan="3">
                            <button type="button" data-bind="click: saveData">
                                Save
                            </button>
                        </td>
                    </tr>
                </tbody>
            </table>
        </td>
    </tr>

</table>

身份证件
名称
白天
伊斯迪蒂
周一
星期二
结婚
清华大学
星期五
拯救
KnockoutJS

 ko.dirtyFlag = function (root, isInitiallyDirty) {
        var result = function () { }
        var _initialState = ko.observable(ko.toJSON(root));
        var _isInitiallyDirty = ko.observable(isInitiallyDirty);

        result.isDirty = ko.dependentObservable(function () {
            return _isInitiallyDirty() || _initialState() !== ko.toJSON(root);
        });

        result.reset = function () {
            _initialState(ko.toJSON(root));
            _isInitiallyDirty(false);
        };

        return result;
    };

    var userMapping = {
        users: {
            key: function (item) {
                return ko.utils.unwrapObservable(item.Id);
            },
            create: function (options) {
                return createUser(options.data);
            }
        }
    };

    var createUser = function (user) {
        var result = ko.mapping.fromJS(user);
        result.dirtyFlag = ko.dirtyFlag(result);
        return result;
    };



        ViewModel = function (serverData) {
            users = ko.observableArray();
            selectedUser = ko.observable();
            selectedLines = ko.observable();
            users(serverData.users());

            ko.bindingHandlers.SelectRelatedUsers = {
                init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
                },
                update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {

                    var u = (bindingContext.$parent.users);
                    // console.log(u.length)
                    if ($(element).is(':checked')) {
                        for (var i = 0; i < u().length; i++) {
                            if ((viewModel.group() == u()[i].group()) && (viewModel.status() == u()[i].status()) && (viewModel.accesslevel() == u()[i].accesslevel())) {
                                u()[i].isSelected(true);

                            } else {
                                u()[i].isSelected(false);

                            }
                        };
                    }
                }
            };

            selectUser = function () {
                selectedUser(this);
                selectedLines(this.Lines);
                console.log(selectedLines)
            };


            saveData = function () {
                alert('Saving data...')
                $.ajax({
                    type: "POST",
                    url: "/server/save",
                    data: ko.toJSON(selectedLines()),
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function (data) {
                        $('div-result').show();
                    }
                });

            };

            return {
                users: users,
                saveData: saveData,
                selectUser: selectUser

            }

        };

        var getdata = ko.mapping.fromJSON('{"users":[{"id":1,"Name":"Ali","group":2,"status":false,"accesslevel":1,"isSelected":false,"Lines":[{"lineid":3,"Mon":1,"Tue":8,"Wed":3,"Thu":4,"Fri":5}]},{"id":2,"Name":"Patel","group":2,"status":false,"accesslevel":1,"isSelected":false,"Lines":[{"lineid":2,"Mon":4,"Tue":2,"Wed":4,"Thu":4,"Fri":5}]},{"id":3,"Name":"Peter","group":2,"status":false,"accesslevel":2,"isSelected":false,"Lines":[{"lineid":3,"Mon":1,"Tue":11,"Wed":3,"Thu":1,"Fri":5}]},{"id":4,"Name":"Martin","group":2,"status":false,"accesslevel":2,"isSelected":false,"Lines":[{"lineid":4,"Mon":11,"Tue":2,"Wed":13,"Thu":4,"Fri":5}]},{"id":5,"Name":"Terry","group":2,"status":false,"accesslevel":2,"isSelected":false,"Lines":[{"lineid":5,"Mon":1,"Tue":2,"Wed":3,"Thu":4,"Fri":5}]}]}', userMapping, {});

        ko.applyBindings(ViewModel(getdata));
ko.dirtyFlag=函数(根,isInitiallyDirty){
var result=函数(){}
var_initialState=ko.observable(ko.toJSON(root));
var _isInitiallyDirty=ko.可观察(isInitiallyDirty);
result.isDirty=ko.DependentToServable(函数(){
返回_isInitiallyDirty()| | u initialState()!==ko.toJSON(根);
});
result.reset=函数(){
_initialState(ko.toJSON(root));
_Isinitialydirty(假);
};
返回结果;
};
var userMapping={
用户:{
关键:功能(项目){
返回不可拆卸的物料(物料Id);
},
创建:函数(选项){
返回createUser(options.data);
}
}
};
var createUser=函数(用户){
var result=ko.mapping.fromJS(用户);
result.dirtyFlag=ko.dirtyFlag(结果);
返回结果;
};
ViewModel=函数(服务器数据){
users=ko.observearray();
selectedUser=ko.observable();
selectedLines=ko.observable();
用户(serverData.users());
ko.bindingHandlers.SelectRelatedUsers={
init:function(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){
},
更新:函数(元素、valueAccessor、allBindingsAccessor、viewModel、bindingContext){
var u=(bindingContext.$parent.users);
//控制台日志(u.length)
if($(元素).is(':checked')){
对于(变量i=0;i        selectUser = function () {
            selectedUser(this);
            selectedLines(this.Lines);
            return true;
        };