-3

我需要使用函数调用将值从一个 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']);
    }
},
 });
4

1 回答 1

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>

希望这可以帮助...

于 2013-10-21T12:15:00.307 回答