2016-06-30 7 views
0

В текущей ситуации, только она находит свое отражение в двух, чтобы рассчитать содержание ввода одного из входного тегаХочу друг с другом отражено путем вычисления входных содержимого трех входных тегов в каждом

· Это только пример

· Все хорошо, если входное содержимое входного тега взаимного отражения

<div id="target"></div> 
<script src="mithril.min.js"></script> 
<script> 
var App = { 
    controller: function() { 
    return { 
     temp: m.prop(10) 
    } 
    }, 
    view: function(ctrl) { 
    return m("div", [ 
     m("input", {onchange: m.withAttr("value", ctrl.temp), value: ctrl.temp()}), 
     m.component(App2, {value: ctrl.temp()}), 
    ]); 
    } 
}; 
var App2 = { 
    controller: function() { 
     return { 
      m1: function (param) { 
      return {'a': parseInt(param)+1, 'b': parseInt(param)+2, 'c': parseInt(param)+3}; 
      }, 

      m2: function (param) { 
      m2Obj = this.m1(param); 
      return {'d': parseInt(m2Obj['a'])+4, 'e': parseInt(m2Obj['b'])+5, 'f': parseInt(m2Obj['c'])+6}; 
      } 
     } 
    }, 
    view: function(ctrl, args) { 
    return m('div', 
     m("input", {onchange: m.withAttr("value", ctrl.m1(args.value)), value: ctrl.m1(args.value)['a']+","+ctrl.m1(args.value)['b']+","+ctrl.m1(args.value)['c']}), 
     m("input", {onchange: m.withAttr("value", ctrl.m2), value: ctrl.m2(args.value)['d']+","+ctrl.m2(args.value)['e']+","+ctrl.m2(args.value)['f']}) 
    ); 
    } 
}; 
m.mount(target, App) 
</script> 

ответ

0

входы в App2 не взаимодействуют должным образом, потому что App2 Компонент передается m.prop() - не m.prop функция сама по себе - поэтому они не могут передать свои результаты назад.

Существует проблема с логикой ваших функций где-то, что я не мог найти: математические операции возвращаются NaN. Но тогда я не уверен, какова ожидаемая логика (с абстрактными функциями и именами свойств трудно следовать!). Удачи с этим!


мне было трудно следить за потоком данных и заданий, поэтому взял на себя смелость немного рефакторинга кода: вместо того, присваивая m.prop к объектам и запрашивая эти свойства по имени во взглядах, то реквизит проходил напрямую. У меня также есть одно и то же имя - value везде, чтобы избежать путаницы. Очевидно, что это не может быть целесообразным, если ваше приложение должно иметь дело с большим количеством точек данных, но я нашел, что это легче рассуждать об этом конкретном примере с этими упрощениями:

var App = { 
    controller: function() { 
    return m.prop(10) 
    }, 
    view: function(value) { 
    return m("div", 
     m("input", { 
     onchange: m.withAttr("value", value), 
     value: value() 
     }), 

     m(App2, value) 
    ) 
    } 
} 

var App2 = { 
    controller: function() { 
    return { 
     m1: function (value) { 
     return { 
      a: parseInt(value)+1, 
      b: parseInt(value)+2, 
      c: parseInt(value)+3 
     } 
     }, 

     m2: function (value) { 
     m2Obj = this.m1(value) 

     return { 
      d: parseInt(m2Obj.a)+4, 
      e: parseInt(m2Obj.b)+5, 
      f: parseInt(m2Obj.c)+6 
     } 
     } 
    } 
    }, 
    view: function(ctrl, value) { 
    return m('div', 
     m("input", { 
     onchange: m.withAttr("value", value(ctrl.m1(value()))), 

     value: 
      ctrl.m1(value()).a+"," 
     +ctrl.m1(value()).b+"," 
     +ctrl.m1(value()).c 
     }), 

     m("input", { 
     onchange: m.withAttr("value", value(ctrl.m2)), 

     value: 
      ctrl.m2(value()).d+"," 
     +ctrl.m2(value()).e+"," 
     +ctrl.m2(value()).f 
     }) 
    ) 
    } 
} 

m.mount(document.body, App) 
+0

Например, имеется возможность для кросса-преобразование двоичного и десятичного ? <текст ввода type>. <Ввод type текст>. После ввода двоичного числа в один из входных тегов, преобразование в десятичное. После ввода десятичного числа в другой тег ввода, преобразование в двоичный номер – re9

+0

Да, безусловно, возможно. – Barney

 Смежные вопросы

  • Нет связанных вопросов^_^