“_”没有定义微软视觉工作室

时间:2014-07-29 17:39:03

标签: javascript html knockout.js

我正在处理应该显示为http://jsfiddle.net/grahamwalsh/6RnXM/的页面 当我在microsoft visual studious中调试它时,我得到Uncaught ReferenceError:_未定义

我查看了与此类似的其他问题,并添加到我的html文件中,现在我得到Uncaught TypeError:无法读取null的属性'nodeType',这似乎是引用我的淘汰脚本

这是我的完整代码

投票(html)

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Voting</title>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/lodash.js/0.10.0/lodash.min.js"></script>
<script src="Scripts/jquery-2.1.1.js"></script>
<script src="Scripts/knockout-3.1.0.js"></script>
<script src="Voting.js"></script>
<link rel="styleSheet" type="text/css" href="voting.css">
</head>
<body>
<div data-bind="foreach: items">
    <div class="profile" data-bind="text: name, click: $parent.clicked, enable: active, css:{highlight: active()}"></div>
</div>

<hr>
<h2>Selected Card</h2>
<div data-bind="foreach: selectedItems">
    <div data-bind="text: name"></div>
</div>
<input type="button" data-bind="click: save" value="Save">

</body>

</html>

投票(Css)

.profile 
{
width: 50px;
height: 80px;
color: black;
background-color: silver;
border: 1px solid black;
float: left;
line-height: 80px;
text-align: center;
margin: 2px;
 }
 .highlight 
{
background: yellow !important;
border:1px solid #000;
color: black;
}

投票(js)

function Card(number) {
this.active = ko.observable(false);
this.name = ko.observable(number);
}

var model = function () {
var cards = [1, 2, 3, 5, 8, 13, 20, 40, 100];
for (var i = 0 ; i < cards.length ; i++)
    cards[i] = new Card(cards[i]);
var items = ko.observableArray(cards)
var selectedItems = ko.computed(function () {
    return _.filter(items(), function (item) {
        return item.active();
    });
})

var clicked = function (item) {
    items().forEach(function (item) { item.active(false) });
    item.active(!this.active());
};

var save = function () {
    alert("sending items \n" + ko.toJSON(selectedItems()));
}

return {
    items: items,
    selectedItems: selectedItems,
    save: save,
    clicked: clicked
}
}

2 个答案:

答案 0 :(得分:1)

是的,因为您的代码中没有添加“下划线”javascript库。

在jsfiddle中,您可以通过提供的工具引用它,但在您的代码中,您需要将其添加到head部分。

因此,将此行添加到您的头部

<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.4.4/underscore-min.js"></script>

如果您已将下划线库添加到脚本文件夹,则添加此行

  <script src="Scripts/underscore.min.js"></script> 

答案 1 :(得分:0)

您的Javascript代码引用了Underscore过滤器方法。尝试在HTML中包含下划线(http://underscorejs.org/)。下载它,将它放在脚本部分,然后输入:

<script src="Scripts/underscore-1.6.0.js"></script>

使用其他来源进入您的HTML。