建議如何綁定到現有的靜態數據?我必須將它包含在視圖模型中,因爲它在計算值中使用。knockout.js綁定到靜態數據
<div id="sum" data-bind="text: sum">
</div>
<div class="line">
dynamic: <span data-bind="text: dynamicValue"></span>
static: <span data-bind="text: staticValue">312</span>
<button data-bind="click: getDataFromServer">get data</button>
</div>
<div class="line">
dynamic: <span data-bind="text: dynamicValue"></span>
static: <span data-bind="text: staticValue">123</span>
<button data-bind="click: getDataFromServer">get data</button>
</div>
function SumViewModel(lines){
this.sum = ko.computed(function(){
var value = 0;
$.each(lines, function(index, element){
var staticValue = element.staticValue();
if (staticValue)
value += staticValue;
var dynamicValue = element.dynamicValue();
if (dynamicValue)
value += dynamicValue;
value += dynamicValue;
});
return value;
});
}
function LineViewModel() {
this.randomNumber = function(max) {
return Math.floor((Math.random() * max) + 1);
};
this.dynamicValue = ko.observable(0);
this.staticValue = ko.observable();
this.getDataFromServer = function() {
this.dynamicValue(this.randomNumber(300));
};
};
var lines = [];
$('.line').each(function(index, element) {
var line = new LineViewModel()
//line.staticValue(parseInt($('[data-bind*="staticValue"]', element).text()));
lines.push(line);
ko.applyBindings(line, element);
});
var sum = new SumViewModel(lines);
ko.applyBindings(sum, $('#sum')[0]);
謝謝你指出我的方向!你怎麼看待這個問題:http://jsfiddle.net/z2ykC/7/ – MatteS
好吧......如果你真的想從innerText中讀取數值,這裏有一些調整。 1)我現在使用發送給staticText綁定的字符串參數在viewModel上動態設置該屬性。 2)我在綁定內部進行解析,而不是總和。 3)我使用jQuery來訪問文本,因爲.innerText在FireFox中不起作用。 4)staticValue不再需要是可觀察的。 http://jsfiddle.net/z2ykC/9/ –
也許這是失控的範圍,但如何讓這個新的綁定工作,與藏漢領域作爲觀測? – MatteS