将knockout附加到父文件中并在iframe中使用它

时间:2013-03-19 10:16:32

标签: jquery knockout.js parent-child

我的申请基于淘汰赛,对我来说最大的障碍如下:

  1. 我在主要父文件
  2. 中附加了必需的JS文件
  3. 我在iFrame中使用了一种方法来引用这些文件。例如,jQuery仅在父级中定义,只是从iframe中引用它来定义iframe中的对象。
  4. 同样,我能够定义敲除对象并使用它但是,问题是 - iframe页面上的绑定无法正常工作
  5. 如果我使用警报来检查淘汰赛的功能是否有效,它就可以了。只有表单字段和数据绑定不起作用
  6. 有任何线索吗?

    这是代码: 父文件(在头下):

     <script type="text/javascript" src="Scripts/jquery-1.8.2.min.js"></script>
    <script type="text/javascript" src="Scripts/jquery-ui-1.8.20.min.js"></script>
    

    (在体下)

    <iframe src="IframePage.html" width="100%" height="100%" id="popUpIframe" marginwidth="0" marginheight="0" frameborder="0" scrolling="auto"></iframe>
    

    iframe文件:

    <script type="text/javascript">   
        var $ = parent.$;
        var ko = parent.ko;    
        $(document).ready(function () { 
            var ViewModel = function (first, last) {
                this.firstName = ko.observable(first);
                this.lastName = ko.observable(last);
    
                this.fullName = ko.computed(function () {
                    alert(this.firstName() + " " + this.lastName());
                    return this.firstName() + " " + this.lastName();
                }, this);
            };        
             ko.applyBindings(new ViewModel("Kawal", "Babra"));
        });
    </script>
    <p>First name: <input data-bind="value: firstName" /></p>
    <p>Last name: <input data-bind="value: lastName" /></p>
    <h2>Hello, <span data-bind="text: fullName"> </span>!</h2>
    

1 个答案:

答案 0 :(得分:0)

只需将根元素指定为iframes文档中的元素,例如:

ko.applyBindings(Model, document.body);

以下是一个有效的例子:http://jsfiddle.net/rD8uR/

以下是iframe文档:http://fiddle.jshell.net/KkPdE/show/light/