2013-10-03 21 views
0

我有这个代码在MVC 4和ko.applyBindings不起作用。它没有做出约束力。我怎样才能使它工作?ko.applyBindings不起作用

这是我的html代码:

<div class="input-group"> 
     <div class="input-append-double full-width"> 
      <input id="ProductName" placeholder="Product Name" data-binding="value: 

$root.vmProduct().ProductName" type="text"/> 
    </div> 
    </div> 

这是我在javascript/jQuery代码:

var ProductModel = function() { 
      var self = this; 
      self.ProductName = ko.observable(); 

      self.ProductName.subscribe(function (value) { 
       console.log(value); 
      }.bind(self)); 
     }; 

      viewModel.vmProduct.ProductName("Estera"); 
     }; 

     var viewModel = { 
      vmProduct: new ProductModel() 
     }; 

     $(document).ready(function() { 

      ko.applyBindings(viewModel); 
} 
+0

我想也data-binding =“value: viewModel.ProductName”,这也不起作用。 –

+0

请尝试“value:vmProduct.ProductName” –

+0

括号中存在问题。 viewModel.vmProduct.ProductName( “Estera”); }; =>它不关闭任何东西 – ronen

回答

1

您的数据是错误的结合,而不是data-binding你应该有data-bind

下面是一个工作Fiddle

<div class="input-group"> 
    <div class="input-append-double full-width"> 
     <input id="ProductName" placeholder="Product Name" data-bind="value: vmProduct.ProductName" type="text" /> 
    </div> 
</div> 

这里是JS

var ProductModel = function() { 
    var self = this; 
    self.ProductName = ko.observable(); 

    self.ProductName.subscribe(function (value) { 
     console.log(value); 
    }); 
}; 
var viewModel = { 
    vmProduct: new ProductModel() 
}; 
$(document).ready(function() { 
    viewModel.vmProduct.ProductName("Estera"); 
    ko.applyBindings(viewModel); 
} 
+0

非常感谢。我从昨天开始使用ko,我不知道我以前怎么没注意到。非常感谢。 –

+0

@esterag我也错过了,它在小提琴中找不到,为什么它不工作,然后注意到HTML – Armand

+0

非常感谢!非常有帮助 –

0

看起来vmProduct不是一个观察的本身,所以当你做你的value绑定,你可以做value: vmPRoduct.ProductName而不是value: vmProduct().ProductName

此外,不知道它是否只是一个剪切和粘贴呃ROR,但是这个代码显得有些格格不入:

viewModel.vmProduct.ProductName("Estera"); 

确保您设置的值时,viewModel创建后。

+0

我也尝试使用它像这样的值:vmProduct.ProductName,我试图显示输入“Estera”并且不绑定。我也这样做了“确保在创建viewModel之后设置值。” –