【发布时间】:2014-06-09 15:18:02
【问题描述】:
我需要绑定一个 ko.observable 到 cshtml 视图,该 ko.observable 包含我定义的对象。为了澄清,让我们用一小段代码来说明:
视图模型:
define('vm.test',
['ko', 'model'],
function(ko, model) {
var
myObject = ko.observable(new model.MyModel()),
someFunction = function() {
// Here goes some code which obtains object data
myObject.property1 = data.test;
myObject.property2 = data.test2;
myObject.property3 = data.test3;
};
return {
myObject: myObject,
someFunction: someFunction
};
});
型号:
define('model.myModel',
['ko'],
function (ko) {
var
MyModel= function () {
var self = this;
self.property1= ko.observable();
self.property2= ko.observable();
self.property3= ko.observable();
self.isNullo = false;
return self;
};
MyModel.Nullo = new MyModel()
.property1('')
.property2('')
.property3('');
MyModel.Nullo.isNullo = true;
return MyModel;
});
我想要实现的是将 myObject 的每个属性绑定到单独的,比如说,在 HTML 中。我尝试以多种方式做到这一点,但不幸的是没有任何成功。 有人知道如何将这样的对象绑定到单独的跨度吗?
我已经尝试过但对我不起作用的方法:
方法一:
<div data-bind="with: myObject">
<span data-bind="text: $data.property1"></span>
<span data-bind="text: $data.property2"></span>
<span data-bind="text: $data.property3"></span>
</div>
方法二:
<span data-bind="text: myObject.property1"></span>
方法3:
<span data-bind="text: myObject().property1"></span>
这些都不起作用。 与视图模型的绑定以及整个结构都有效,因为我在 vm 中使用的其他属性(简单的 observables 或 observableArrays)与视图绑定没有任何问题。更重要的是,如果我从视图模型中编写控制台 myObject 的内容,它会填充我想要的值。但是,这些值并未分配给视图。
【问题讨论】:
标签: javascript mvvm knockout.js binding