我是Durandal /微風/淘汰賽的新手,並且試圖在項目中使用它們,但我很早就陷入了困境。ko.observable在Durandal/KO /微風中不更新
目前我有一個單一的視圖(#/家庭/新)來創建一個新的家庭。我已經從API獲取微風元數據,然後運行EntityManager.createEntity('Household'),這將返回一個家庭對象,就像我期望的那樣。
然後設置StreetAddress屬性的值並更新ko.observable(vm.household(hse))。一旦視圖顯示observable不起作用。我目前的視圖模型非常簡單,文本輸入和div。他們都有數據綁定到StreetAddress屬性,但他們都沒有更新,也沒有從我設置的默認值開始。
奇怪的是,我沒有收到任何錯誤,以幫助我更接近解決方案。我真的不知道我哪裏錯了。任何幫助都很好。以下是我正在嘗試使用的代碼。
新的家庭觀
<div>
<h3>New Household Details</h3>
<div data-bind="text: household.StreetAddress"></div>
<input type="text" data-bind="value: household.StreetAddress" />
</div>
新的家庭視圖模型:
define(function (require) {
var router = require('durandal/plugins/router');
var mainDataservice = require('dataservices/mainDataservice');
var system = require('durandal/system');
var vm = {
router: router,
activate: activate,
household: ko.observable()
};
return vm;
function activate() {
return system.defer(function (dfd) {
var hse = mainDataservice.createHousehold();
hse.StreetAddress("1234 Main Street");
vm.household(hse);
dfd.resolve();
}).promise();
}
});
MainDataservice
define(function (require) {
var serviceName = 'api/mainDataservice', // route to the Web Api controller
manager = new breeze.EntityManager(serviceName);
return {
manager: manager,
activate: function() {
//I call this manually at the start of the application
return manager.fetchMetadata();
},
createHousehold: function() {
return manager.createEntity('Household');
}
};
});
家用實體框架模型
public partial class Household
{
[Key]
[Required]
[Display(Name = "Household ID")]
public int HouseholdID { get; set; }
[StringLength(50)]
[Display(Name = "Street Address")]
public string StreetAddress { get; set; }
[StringLength(50)]
[Display(Name = "City")]
public string City { get; set; }
[StringLength(2)]
[Display(Name = "State")]
public string State { get; set; }
[StringLength(10)]
[Display(Name = "Zipcode")]
public string Zipcode { get; set; }
}
*嘆*蕩!我知道這是明顯的,我失蹤了。這就是它所需要的。謝謝!我欠你一杯啤酒。 – adamlj