2013-02-07 38 views
0

我试图了解淘汰赛的语法,并遇到问题。我KO的物业未定义

例视图模型

var Market = function (e) { 
    var self = this; 
    self.MarketId = ko.observable(e ? e.MarketId : ''); 
    self.Description = ko.observable(e ? e.Description : ''); 
}; 

var MarketAddViewModel = function() { 
    var self = this; 
    var url = "/api/market"; 

    self.newMarket = ko.observable(new Market()); 

    // Save market 
    saveMarket = function (item) { 
     $.ajax({ 
      type: 'POST', 
      url: url, 
      data: ko.toJS(item), 
      success: function (data) { 
       // SUCCESS 
      }, 
      error: function (err) { 
       var err = JSON.parse(err.responseText); 
       var errors = ""; 
       for (var key in err) { 
        if (err.hasOwnProperty(key)) { 
         errors += key.replace("employee.", "") + " : " + err[key]; 
        } 
       } 

       alert('error'); 
       //$("<div></div>").html(errors).dialog({ modal: true, title: JSON.parse(err.responseText).Message, buttons: { "Ok": function() { $(this).dialog("close"); } } }).show(); 
      }, 
      complete: function() { 
       // complete 
      } 
     }); 
    }; 
}; 

要绑定它,我用这个代码

$(document).ready(function() { 
      ko.applyBindings(new MarketAddViewModel()); 
     }); 

然后将HTML元素

<input data-bind="value: Description" type="text" class="required input-xxlarge" name="description" id="description" /> 

但O负载时,该页面,我收到“描述未定义”

任何线索?

回答

1

您可以使用与绑定,这将改变背景下的子元素到新市场背景下

<div data-bind="with: newMarket"> 
    <input data-bind="value: Description" type="text" class="required input-xxlarge" name="description" id="description" /> 
</div> 

编辑:我还可以趁机做一些公关我的约定优于配置LIB 的上面的语法看起来像

<div data-name="newMarket"> 
    <input data-name="Description" type="text" class="required input-xxlarge" name="description" id="description" /> 
</div> 

https://github.com/AndersMalmgren/Knockout.BindingConventions

1

我认为它需要

<input data-bind="value: newMarket().Description" type="text" class="required input-xxlarge" name="description" id="description" /> 

(注意newMarket().),因为它是MarketAddViewModel实例的属性。括号将提取可观察值,以便可以提取其“描述”属性。