gpt4 book ai didi

javascript - 无法获取未定义或空引用的属性 'subscribe'

转载 作者:行者123 更新时间:2023-11-29 21:47:22 28 4
gpt4 key购买 nike

我在订阅我的 HTML 页面中的下拉值更改时遇到实现 knockout Js 的问题。这是我的 HTML

    <div>
<span>Request Types : </span>
<select data-bind="options: requestTypes,
optionsText: 'Name',
optionsCaption: '--Select--',
value: selectedRequestType">
</select>
</div>

ViewModel如下图所示

                        wd.viewModel = function () {
var data = {};
var self = this;
var url = '';
var selectedRequestingCountry = ko.observable("");
self.optionsProvider = new wd.optionsProvider(self);
self.objGenralInfo = new wd.GI_form(data);
/* For Requesting Country */
url = wd.ConfigObject.baseUrl + wd.ConfigObject.masterServiceUrl + wd.ConfigObject.category.importingCountries; // Fetch Requesting Countries
self.importingCountries = self.optionsProvider.get("importingCountries", url, {});
self.selectedRequestingCountry = ko.observable("");
this.requestingCountryArea = ko.observable("");

/* For Generic Name*/
url = wd.ConfigObject.baseUrl + wd.ConfigObject.masterServiceUrl + wd.ConfigObject.category.genericNames; // Fetch Generic Names
self.genericNames = self.optionsProvider.get("genericNames", url, {});
self.selectedGenericName = ko.observable("");

/* Override Requesting Country Address */
self.IsOverride = ko.observable(false);

/* For Request Types */
self.selectedRequestType = ko.observable("");
self.selectedTradeName = ko.observable("");
};

// Whenever the selected Generic Name changes, populate the Request Type
var myName = wd.viewModel.selectedGenericName.subscribe(function () {
wd.viewModel.url = wd.ConfigObject.baseUrl + wd.ConfigObject.masterServiceUrl + wd.ConfigObject.category.requestTypes + "/" +
wd.viewModel.selectedGenericName().Name;
wd.viewModel.requestTypes = wd.viewModel.optionsProvider.get("requestTypes", url, ''); // Fetch request types based on generic name
}, wd.viewModel);

$(function () {
ko.applyBindings(wd.viewModel);
});

仅在加载通用名称下拉值后才会填充请求类型下拉值。用户必须先选择通用名称。在页面加载时,它会抛出错误“无法获取未定义或空引用的属性‘订阅’”。

非常感谢任何帮助,因为我是 knockout javascript MVVM 框架的新手。

最佳答案

您已将 viewModel 声明为 wd.viewModel = function () {},这是一个构造函数,您需要在绑定(bind)或订阅之前创建它的新实例。如果你添加这样的东西:

wd.viewModel = new wd.viewModel();

在这一行之前它应该可以工作

var myName = wd.viewModel.selectedGenericName.subscribe(function () {

关于javascript - 无法获取未定义或空引用的属性 'subscribe',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30620073/

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