如何在淘汰赛中传递价值

时间:2013-10-21 12:10:59

标签: javascript knockout.js

我需要使用函数调用将值从一个javascript传递到另一个javascript。我正在从II js返回月份值到I js但是值没有在html中填充。示例代码如下所示,但它不起作用。请帮我修复此代码:

HTML FILE
========
<body>
    <div id="selectdiv">
        <input type="radio" id="radio1" name="radioGrp" value='div1' data-bind="checked:subDiv1" />div1
        <input type="radio" id="radio2" name="radioGrp" value='div2' data-bind="checked:subDiv1" />div2</div>
    <div id="myDiv" name="myDiv" class="myDiv" style="font-family: Helvetica; font-size: 12pt; border: 1px solid black;">
        <div id="subDiv1" name="subDiv1" data-bind="visible:subDiv1()=='div1'" class="subDiv1" style="color: #FF0000; border: 1px dotted black;">
             <h5>Section 1</h5>

            <p>MONTHS...</p>
            <div id="tabContainer">
                <ul data-bind="foreach: subDemoMainObj.months()">
                    <li> <b data-bind="text: $data"></b>

                    </li>
                </ul>
            </div>
        </div>
        <br />
        <div id="subDiv2" name="subDiv2" data-bind="visible:subDiv1()=='div2'" class="subDiv2" style="color: #FF00FF;border: 1px dashed black;">
             <h5>Section 2</h5>

            <p>This paragraph would be your content paragraph...</p>
            <p>Here's another content article right here.</p>
        </div>
    </div>
</body>

I JS FILE(main js file which is calling II js file for getting value of months)
=========
require(["knockout-2.2.1","subDemoMain"],
function(ko,demoMain){
$(document).ready(function() {
         alert("ready");
    var vm = function () {
        var self = this;
        self.subDiv1 = ko.observable(false);
        self.subDiv2 = ko.observable(false);

        self.months = new subDemoMain().getMonths();//ko.observableArray(['Jan', 'Feb', 'Mar', 'etc']);
    };

   /* var getMonths=function(){
        return ko.observableArray(['Jan', 'Feb', 'Mar', 'etc']);
    }*/
    // alert("ready2");
    ko.applyBindings(new vm());

    });
 });

II JS FILE
=========
define(["knockout-2.2.1"],
function(ko){

alert("ready1");
    var getMonths=function(){
        return ko.observableArray(['Jan', 'Feb', 'Mar', 'etc']);
    }
},
 });

1 个答案:

答案 0 :(得分:0)

使用ko.applybindings

ko.applyBindings(data,document.getElementById('selectdiv'))

ko.applyBindings接受第二个参数,该参数是用作根的DOM元素。

这可以让你做类似的事情:

<div id="div1">
  <input data-bind="value: name" />  <!--here name will appears as 'Cee Aim'-->
</div>

<div id="div2">
  <input data-bind="value: name" />   <!--here name will appears as 'Krish'-->
</div>

<script type="text/javascript">
  var viewModelA = {
     name: ko.observable("Cee Aim")
  };

  var viewModelB = {
     name: ko.observable("Krish")
  };

  ko.applyBindings(viewModelA, document.getElementById("div1"));
  ko.applyBindings(viewModelB, document.getElementById("div2"));
</script>

希望这会有所帮助...