2013-03-04 40 views
0

存在HTML数据绑定设置器的问题。我希望它设置为模型(exerciseCategories)间隔值。 如果我绑定到模型的间隔,它是正确的值,但不可观察。 如果我将它绑定到$ parent.intervals,它是来自viewModel的默认值(1),但它是可观察的。 我想都:)。我究竟做错了什么? 像这样的工作,但显示[目标对象]:KnockoutJS数据绑定设置器

<td data-bind='with: exercise'> 
    <input data-bind='value: $parent.intervals(intervals)' /> 
</td> 

What I've got is - HTML  
      ... 
      <td> 
       <select data-bind='options: exerciseCategories , optionsText: "category", optionsCaption: "Izberite...", value: exerciseType'></select> 
      </td> 
      <td data-bind="with: exerciseType"> 
       <select data-bind='options: exercises, optionsText: "title", optionsCaption: "Izberite...", value: $parent.exercise'></select> 
      </td> 
      <td data-bind='with: exercise'> 
        <input data-bind='value: $parent.intervals' /> 
      </td> 
      ... 
JavaScript 
    var exerciseCategories = [ 
    { 
     exercises: [{ 
      title: 'Aerobic exercise #1', 
      intervals: 2 
     }], 
     category: 'Aerobics' 
    }]; 

     var Exercise = function() { 
       var self = this; 

       self.exerciseType = ko.observable(); 
       self.exercise = ko.observable(); 
       self.intervals = ko.observable(1); 
      }; 
+0

你是如何获取数据到您的视图模型? – 2013-03-04 10:51:59

+0

你将不得不提供更多的代码。我缺少与绑定的for:绑定和视图模型的表标记。我认为你在混合观看模型。 – nickvane 2013-03-04 10:59:12

+0

这只是摘录。整体几乎相同http://jsfiddle.net/rniemeyer/adNuR/ – kayz1 2013-03-04 11:57:39

回答

0

做$ parent.intervals(间隔)要调用的时间间隔观察到的函数传递的时间间隔作为参数,显然你会收到KO。作为结果的可观察对象。

我得到了你的摘录工作。看看这个http://jsfiddle.net/MhHc4/

HTML

Categories: 
<select data-bind='options: exerciseCategories , optionsText: "category", optionsCaption: "Izberite...", value: selectedCategory'></select> 
<p>selectedCategory() debug: <pre data-bind="text: selectedCategory() ? ko.toJSON(selectedCategory().exercises, null, 2) : ''"></pre> 
</p>Exercises: 
<select data-bind='options: selectedCategory() ? selectedCategory().exercises : [], optionsText: "title", value: selectedExercise'></select> 
<p>selectedExercise() debug: <pre data-bind="text: selectedExercise() ? ko.toJSON(selectedExercise(), null, 2) : 'x'"></pre> 
</p> 
<input type="text" data-bind="attr : { value : selectedExercise() ? selectedExercise().intervals : 0 }"/> 

的Javascript

var exerciseCategories = [{ 
    exercises: [{ 
     title: 'Aerobic exercise #1', 
     intervals: 2 
    }], 
    category: 'Aerobics' 
}]; 

var ExerciseViewModel = function() { 
    var self = this; 

    self.exerciseCategories = ko.observable(exerciseCategories); 
    self.selectedCategory = ko.observable(); 
    self.selectedExercise = ko.observable(); 
    self.intervals = ko.observable(1); 
}; 
ko.applyBindings(new ExerciseViewModel()); 

HTH

+0

这不是我想要的。如果您最终将放置为默认值。 – kayz1 2013-03-05 06:27:55