Когда вы привязываете дополнительный атрибут в ссылке на данные, привязка по умолчанию и trigger=true перестают работать. Нет никакой ошибки или чего-то очевидного. Но это не работает.
привязка по умолчанию
В этом примере (http://jsfiddle.net/BorisMoore/wch601L9/) "сумма" свойство привязано без явной установки атрибута (например, value{:amount} ). Оно работает!
<td><input data-link="amount trigger=true" /></td>
Если вы измените этот код, добавив дополнительную привязку, «сумма» привязки по умолчанию больше не будет отображаться в текстовом поле.
<td><input data-link="amount trigger=true disabled{:isSameAmountForAll}" /></td>
Здесь (http://jsfiddle.net/michaelsync/xzo15n0s/) моя версия примера Бориса Мура. и я внес изменения, чтобы показать этот сценарий.
Решение, которое я нашел, состоит в том, чтобы явно указать имя атрибута для всех привязок.
<td><input data-link="value{:amount} trigger=true disabled{:isSameAmountForAll}" /></td>
Это известная проблема?
триггер=true
Если вы введете несколько чисел в текстовое поле (пример примера http://jsfiddle.net/michaelsync/xzo15n0s/ ), вы увидите, что общее количество не обновляется.
Я не уверен, как это обойти. Это тоже известная проблема?
Не стесняйтесь, дайте мне знать, если этот вопрос не ясен. Спасибо!
Примечание. Если вам интересно, почему я хочу связать два атрибута, то это образец, который я тестирую. http://jsfiddle.net/michaelsync/078cazh8/2/
Обновление №1:
Сейчас я отлаживаю исходный код JsViews. Я изменил пример кода для отладки.
Вот v1. http://jsfiddle.net/michaelsync/tmwyhc7n/1/
Шаблон только с одной привязкой
<script id="personTmpl" type="text/x-jsrender">
<input data-link="amount trigger=true" /> <br/>
</script>
<div id="placeholder" ></div>
JS
var myTemplate = $.templates("#personTmpl");
var people = [
{
name: "Adriana",
amount: 10,
isSameAmountForAll: false
}
];
myTemplate.link("#placeholder", people);
Я установил точку останова на function parseTag(all, bind, tagName, converter, colon, html, comment, codeTag, params, slash, closeBlock, index)
Я получил только попадание, а значение параметра "все" равно ""{{:количество триггеров=true}}""
Теперь я добавил дополнительную привязку, как показано ниже.
<script id="personTmpl" type="text/x-jsrender">
<input data-link="value{:amount} trigger=true disabled{:isSameAmountForAll}" /> <br/>
</script>
<div id="placeholder" ></div>
Версия 2: http://jsfiddle.net/michaelsync/tmwyhc7n/2/
затем я получил два попадания, потому что я связываю «количество» и «isSameAmountForAll».. Вы видите, что «trigger = true» отсутствует при разборе.
Итак... Я переместил "trigger=true" внутрь суммы.
<script id="personTmpl" type="text/x-jsrender">
<input data-link="value{:amount trigger=true} disabled{:isSameAmountForAll}" /> <br/>
</script>
<div id="placeholder" ></div>
Версия 3: http://jsfiddle.net/michaelsync/tmwyhc7n/3/
Обновление №2:
Разбор кажется правильным, но ObserverAll не работает.
Я изменил приведенный ниже код, чтобы обнаружить изменения суммы, но событие не запускается.
// http://stackoverflow.com/questions/25721180/summary-value-calculation-with-jsviews
var myTemplate = $.templates("#personTmpl");
var people = [
{
name: "Adriana",
amount: 10,
isSameAmountForAll: false
}
];
myTemplate.link("#placeholder", people);
$.observable(people).observeAll(function() {
console.log('weird stuff');
});