繁体   English   中英

Knockout.js选择值更改不会更新可观察到

[英]Knockoutjs select value change doesn't update observable

我有一个选择选项,它从EmailField中获取其初始值,并从allEmailFields中获取其选项:

<select data-bind="options: $parent.allEmailFields, value: EmailField()"></select>

当我更改选择的值时,我的模型不会更新。 这不是两种绑定方法应该解决的问题吗? 还是我需要为change事件编写处理程序?

模块在这里:

    define('mods/fieldmapping', ["knockout", "libs/knockout.mapping", "datacontext", "mods/campaigner", "text!templates/fieldmapping.html", "text!styles/fieldmapping.css"],
function (ko, mapping, datacontext, campaigner, html, css) {
    'use strict';
    var
        fieldMappingItem = function (data) {
            var self = this;
            self.CrmField = ko.observable(data.CrmField);
            self.EmailField = ko.observable(data.EmailField);
        },
        dataMappingOptions = {
            key: function (data) {
                return data.PlatformFieldName;
            },
            create: function (options) {
                return new fieldMappingItem(options.data);
            }
        },
        fieldMappingViewModel = {
            contentLoading: ko.observable(false)
        },
        showFieldMapping = function () {
            campaigner.addStylesToHead(css);
            campaigner.addModalInnerPanel(html);
        },
        init = function (connectionId, connectionName) {            
            fieldMappingViewModel.fieldMappings = mapping.fromJS([]);
            fieldMappingViewModel.allEmailFields = mapping.fromJS([]);            
            fieldMappingViewModel.originatorConnectionName = ko.observable();
            fieldMappingViewModel.originatorConnectionName(connectionName);
            fieldMappingViewModel.saveFieldMappings = function () {
                console.log(ko.toJSON(fieldMappingViewModel.fieldMappings));
                amplify.request("updateExistingFieldMappings", 
                    {
                        cid: connectionId,
                        RequestEntity: ko.toJSON(fieldMappingViewModel.fieldMappings)
                    },
                    function (data) {
                        console.log(data);
                    });
            };
           showFieldMapping();

            amplify.request('getExistingFieldMappings', { cid: connectionId }, function (data) {
                amplify.request("getCampaignerFields", function (breezerData) {
                    mapping.fromJS(breezerData.ResponseEntity, fieldMappingViewModel.allEmailFields);
                });                
                mapping.fromJS(data.ResponseEntity, dataMappingOptions, fieldMappingViewModel.fieldMappings);                
                ko.applyBindings(fieldMappingViewModel, $('#fieldMapping')[0]);
            });
        };
    return {
        init: init,
        fieldMappingViewModel: fieldMappingViewModel,
        html: html,
        css : css
    }
});

更换:

<select data-bind="options: $parent.allEmailFields, value: EmailField()"></select>

附:

<select data-bind="options: $parent.allEmailFields, value: EmailField"></select>

如果要创建双皮依存关系,则应将其传递给可观察的绑定。

PShttp : //knockoutjs.com/documentation/observables.html#observables

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM