【问题标题】:Using a external .js file with knockout not applying bindings使用带有敲除的外部 .js 文件不应用绑定
【发布时间】:2015-02-02 09:51:29
【问题描述】:

我正在尝试掌握 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());

alert('绑定完成');

当我现在加载 html 页面时,我会收到绑定开始的警报,然后......什么都没有...... :(

如果我删除 ko.applyBindings(.. 的行,那么它会给我第二个警报,表明绑定已完成。但显然按钮没有注意到。

我在做什么错它似乎没有看到 .js 文件中的淘汰功能,但我已经碰壁了..

请帮忙..

【问题讨论】:

    标签: javascript html knockout.js


    【解决方案1】:

    'head' html 标签将在 'body' 标签之前加载...

    您在“head”标签中应用了淘汰赛绑定。 (在您的自定义 .js 文件中包含淘汰赛后)

    这些绑定/Javascript 代码在主体加载之前加载/执行/发生; 因此它的 / 敲除试图将 js 数据绑定到浏览器 / 窗口还不知道的 html body UI 内容。

    附言- 将您的内容放在“头部”之后的“正文”中。然后在“正文”之后包含您的自定义 .js 文件,这样现在所有内容都已加载以实现您想要的。或者...在 .js 本身中包含逻辑以在 DOM / 窗口完成加载后执行。

    【讨论】:

      【解决方案2】:

      (感谢 Jody Geers 为我指明了正确的方向)

      好吧,我是个 HTML 菜鸟..

      没有身体

      添加它们然后做了

      <script type='text/javascript' src='jsfile.js'></script>
      

      现在工作正常..

      【讨论】:

        【解决方案3】:

        请将您的 js 文件放在 Body 之后。如果您将 Knock out js 文件保留在 head 中,则不会出现带有 Model 的 UI。因为在 js 文件中找不到 UI。

        【讨论】:

        • 请澄清您在此处所说的内容。
        • 该问题已在上面简洁地回答并被接受。话虽如此,您的回答也没有多大意义。
        猜你喜欢
        • 1970-01-01
        • 2016-04-27
        • 2013-03-24
        • 2014-01-03
        • 1970-01-01
        • 1970-01-01
        • 2013-01-08
        • 2013-09-25
        • 1970-01-01
        相关资源
        最近更新 更多