使用带有敲除的外部 .js 文件不应用绑定
Using a external .js file with knockout not applying bindings
我正在尝试掌握 Knockout,因此我创建了以下 html 文件...
<html>
<head>
<script type='text/javascript' src='http://knockoutjs.com/downloads/knockout-3.2.0.js'></script>
<script type='text/javascript' src='jsfile.js'></script>
</head>
<h1>Welcome<h1>
<button data-bind="click: speak">Say it</button>
<script>
alert('Binding Started');
function indexViewModel() {
this.speak = function() {
alert('Working!!');
};
}
ko.applyBindings(new indexViewModel());
alert('Binding Done');
</script>
</html>
当我加载页面时,一切都很好。我收到一条警告说绑定正在开始....然后我收到另一个警告说它已完成,当我单击按钮时...是的,你猜对了我收到一条警告说它正在工作。
我遇到的问题是,当我尝试将 java-脚本代码分离到外部文件中时,它不应用绑定。
所以我的 html 文件将如下所示......
<html>
<head>
<script type='text/javascript' src='http://knockoutjs.com/downloads/knockout-3.2.0.js'></script>
<script type='text/javascript' src='jsfile.js'></script>
</head>
<h1>Welcome<h1>
<button data-bind="click: speak">Say it</button>
</html>
我的文件 "jsfile.js" 看起来像这样....
alert('Binding Started');
function indexViewModel() {
this.speak = function() {
alert('Working asstastic');
};
}
ko.applyBindings(new indexViewModel());
警报('Binding Done');
当我现在加载 html 页面时,我收到绑定开始的警报,然后......没有...... :(
如果我删除 ko.applyBindings(.. 的行,那么它会向我发出绑定已完成的第二个警报。但是显然按钮没有注意到。
我做错了什么在.js文件中好像没有看到knockout函数但是我碰壁了..
请帮忙..
'head' html 标签将在 'body' 标签之前加载...
您在 'head' 标签中应用了敲除绑定。
(在您的自定义 .js 文件中包含剔除后)
这些绑定/Javascript 代码在主体加载之前加载/执行/发生;
因此它的 / knockout 试图将 js 数据绑定到浏览器 / window 尚不知道的 html body UI 内容。
p.s。 - 将您的内容放在 'head' 之后的 'body' 中。然后在 'body,' 之后包含您的自定义 .js 文件,这样现在所有内容都已加载,以实现您想要的效果。或者...在 .js 本身中包含逻辑以在 DOM / window 完成加载后执行。
(感谢 Jody Geers 为我指明了正确的方向)
好吧,我是一个 HTML 菜鸟..
没有尸体<>
添加它们,然后
<script type='text/javascript' src='jsfile.js'></script>
现在工作正常..
请将您的 js 文件放在 Body 之后。如果您将 Knock out js 文件放在 head 中,那么 UI 和 Model.As UI 不会在 UI 中找不到js文件。
我正在尝试掌握 Knockout,因此我创建了以下 html 文件...
<html>
<head>
<script type='text/javascript' src='http://knockoutjs.com/downloads/knockout-3.2.0.js'></script>
<script type='text/javascript' src='jsfile.js'></script>
</head>
<h1>Welcome<h1>
<button data-bind="click: speak">Say it</button>
<script>
alert('Binding Started');
function indexViewModel() {
this.speak = function() {
alert('Working!!');
};
}
ko.applyBindings(new indexViewModel());
alert('Binding Done');
</script>
</html>
当我加载页面时,一切都很好。我收到一条警告说绑定正在开始....然后我收到另一个警告说它已完成,当我单击按钮时...是的,你猜对了我收到一条警告说它正在工作。
我遇到的问题是,当我尝试将 java-脚本代码分离到外部文件中时,它不应用绑定。
所以我的 html 文件将如下所示......
<html>
<head>
<script type='text/javascript' src='http://knockoutjs.com/downloads/knockout-3.2.0.js'></script>
<script type='text/javascript' src='jsfile.js'></script>
</head>
<h1>Welcome<h1>
<button data-bind="click: speak">Say it</button>
</html>
我的文件 "jsfile.js" 看起来像这样....
alert('Binding Started');
function indexViewModel() {
this.speak = function() {
alert('Working asstastic');
};
}
ko.applyBindings(new indexViewModel());
警报('Binding Done');
当我现在加载 html 页面时,我收到绑定开始的警报,然后......没有...... :(
如果我删除 ko.applyBindings(.. 的行,那么它会向我发出绑定已完成的第二个警报。但是显然按钮没有注意到。
我做错了什么在.js文件中好像没有看到knockout函数但是我碰壁了..
请帮忙..
'head' html 标签将在 'body' 标签之前加载...
您在 'head' 标签中应用了敲除绑定。 (在您的自定义 .js 文件中包含剔除后)
这些绑定/Javascript 代码在主体加载之前加载/执行/发生; 因此它的 / knockout 试图将 js 数据绑定到浏览器 / window 尚不知道的 html body UI 内容。
p.s。 - 将您的内容放在 'head' 之后的 'body' 中。然后在 'body,' 之后包含您的自定义 .js 文件,这样现在所有内容都已加载,以实现您想要的效果。或者...在 .js 本身中包含逻辑以在 DOM / window 完成加载后执行。
(感谢 Jody Geers 为我指明了正确的方向)
好吧,我是一个 HTML 菜鸟..
没有尸体<>
添加它们,然后
<script type='text/javascript' src='jsfile.js'></script>
现在工作正常..
请将您的 js 文件放在 Body 之后。如果您将 Knock out js 文件放在 head 中,那么 UI 和 Model.As UI 不会在 UI 中找不到js文件。