Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript knockoutjs computed无法访问可观察值_Javascript_Knockout.js - Fatal编程技术网

Javascript knockoutjs computed无法访问可观察值

Javascript knockoutjs computed无法访问可观察值,javascript,knockout.js,Javascript,Knockout.js,我想我99%都同意这一点。我有一个ko.computed,如果它引用了数据绑定中的可观测值,它就可以工作。然而,当我试图得到ko.computed中的可观测值时,我得到了一个错误。这里是小提琴,您可以看到绑定到plusTwo()的跨度。name会根据需要进行更新。基于这个事实,我想让plusOne()返回类似于self.selectedData().name+“other text”的内容,但这会产生错误 我对该代码有什么不理解 谢谢 以及子孙后代的代码 function Student(dat

我想我99%都同意这一点。我有一个ko.computed,如果它引用了数据绑定中的可观测值,它就可以工作。然而,当我试图得到ko.computed中的可观测值时,我得到了一个错误。这里是小提琴,您可以看到绑定到
plusTwo()的跨度。name
会根据需要进行更新。基于这个事实,我想让plusOne()返回类似于
self.selectedData().name+“other text”
的内容,但这会产生错误

我对该代码有什么不理解

谢谢

以及子孙后代的代码

function Student(data) {
  this.name = ko.observable(data);
};

function ViewModel(students) {
  var self = this;
  self.students = ko.observableArray([]);
  self.selectedData = ko.observable();
  self.plusOne = ko.computed(function () {
    return self.selectedData() + " why can't I get this to combine with selectedData!!!!";}, this);
  self.plusTwo = ko.computed(function () {
    return this.selectedData();
  }, this);
  students.forEach(function (student) {
    self.students.push(new Student(student));
  });};
var initData = ["koa", "pine", "rosewood"];
window.appViewModel = new ViewModel(initData);
ko.applyBindings(window.appViewModel);
HTML:


名称





由于selectedData属性未初始化,您将收到错误。使用空的student对象初始化将解决您的问题

JSFIDLE

<table>
<tr style="vertical-align:top">
    <td>
        <table border="1">
            <thead>
                <tr>
                    <th>Name</th>
                </tr>
            </thead>
            <tbody data-bind="foreach: students">
                <tr>
                    <td>
                        <input type="text" data-bind="value: name, valueUpdate: 'keyup', event: {focus: $parent.selectedData}" />
                    </td>
                </tr>
            </tbody>
        </table>
    </td>
    <td>
        <div data-bind="if: selectedData"> 
            <span data-bind="text: selectedData().name"></span>
            <br/>
            <br/>
            <span data-bind="text: plusOne()"></span>
            <br/>
            <br/>
            <span data-bind="text: plusTwo().name"></span>
        </div>
    </td>
</tr>
 self.selectedData = ko.observable(new Student(''));

 self.plusOne = ko.computed(function () {
        return  this.selectedData().name() 
                      + " I can now combine with selectedData!!!!";
}, this);