小编Rob*_*ner的帖子

使用knockout.js级联下拉列表

我正在尝试构建一个三步下拉系列.我能想到的最简单的例子是构建一年/制造/模型下拉集.

我试过跟随这个例子并使用另一个小提琴(另一个小提琴url以jsfiddle.net/rniemeyer/V2gvT/结尾),但是我遇到了数据绑定问题.

我的小提琴有一个使用年份/品牌/模型对象的静态列表,年份列表正确绑定,但永远不会将品牌/模型列表添加到数据绑定.

我的小提琴

简单标记

<label for="ddlYear">Year</label>
<select id="ddlYear" data-bind="options: years, value: selectedYear"></select>

<label for="ddlMake">Make</label>
<select id="ddlMake" data-bind="options: makes, value: selectedMake'"></select>

<label for="ddlModel">Model</label>
<select id="ddlModel" data-bind="options: models"></select>
Run Code Online (Sandbox Code Playgroud)

脚本

var viewModel = {
    selectedYear: ko.observable(""),
    selectedMake: ko.observable(""),
    selectedModel: ko.observable("")    
};

viewModel.years = ko.dependentObservable(function() {
    return Enumerable.From(makeModelList).Select(function(it) {
      return it.year;
    }).OrderBy(function(it) {
      return it.year;  
    }).Distinct().ToArray();
}, viewModel);

viewModel.makes = ko.dependentObservable(function() {
    var selectedYear = this.selectedYear();
    return Enumerable.From(makeModelList).Where(function(it) {
        return it.year == selectedYear;
    }).Select(function(it) {
      return it.make;  
    }).ToArray();
}, viewModel);

viewModel.models = ko.dependentObservable(function() …
Run Code Online (Sandbox Code Playgroud)

html data-binding knockout.js

7
推荐指数
1
解决办法
4952
查看次数

自动javascript类型强制

这更像是一个关于javascript如何工作的思考,而不是修复的实际问题.在类似声明的情况下

var str = 9 + " some words here";
Run Code Online (Sandbox Code Playgroud)

结果str var将包含值"9 some words here".我的问题是javascript使用什么函数来自动将Number对象'9'强制转换为一个字符串,以便与String对象"这里的一些单词"连接,并且这个函数是可更改/可重写的.

这开始于我需要在页面上输出前一个0的单个数字.这很容易通过Number对象上的快速原型函数来完成

Number.prototype.SpecialFormat = function() {
  if(this < 10) {
    return "0" + this;
  }
  else {
   return this.toString();
  }
};
Run Code Online (Sandbox Code Playgroud)

并简单地称呼它 (9).SpecialFormat() + " words here";

但这让我想知道我是否可以使用a覆盖Number上的toString函数

Number.prototype.toString = function() {
  if(this < 10) {
    return "0" + this;
  }
  else {
   return this;
  }
};
Run Code Online (Sandbox Code Playgroud)

,只是让javascripts自动转换为我处理它,所以我可以使用标准9 + " words here";来获得相同的结果"09 words here".这不仅仅是隐含的工作,我不得不最终将.toString添加到9 (9).toString() + " words here"(进一步看,会导致一些无限循环).

那么有没有办法覆盖javascript本机类型的内置功能?

*注意:我意识到这可能是" 最坏的想法 "

javascript

5
推荐指数
1
解决办法
884
查看次数

标签 统计

data-binding ×1

html ×1

javascript ×1

knockout.js ×1