2013-06-28 37 views
1

我有我的requirejs模塊互相交叉引用和交互的問題。需要js中的交叉引用

這裏是例子:jsFiddle

第一模塊將進行第二模塊的價值觀,爲什麼requirejs表現得像是什麼?


HTML:

<div id="first"> 
    <input data-bind="value: user.Name" /> 
    <input data-bind="value: user.Age" /> 
    <button data-bind="click: editUser">Edit</button> 
</div> 

<div id="second"> 
    <input data-bind="value: user.Name" /> 
    <input data-bind="value: user.Age" /> 
    <button data-bind="click: saveUser">Save</button> 
</div> 

JS:

define('vm', 
     [ 
      'vm.edit', 
      'vm.save' 
      ], 
     function(edit,save){ 
      return{ 
       save: save, 
       edit: edit 
      } 
     }); 
define('vm.save',function(){ 
var self = this; 
    self.user = { 
     Name: ko.observable(), 
     Age: ko.observable() 
    } 

    var saveUser = function() { 
    alert(self.user.Name() + " is age of " + self.user.Age()); 
    } 

    return { 
     saveUser: saveUser, 
     user: user 
    } 
}); 

define('vm.edit',function(){ 
var self = this; 
    self.user = { 
     Name: ko.observable(), 
     Age: ko.observable() 
    } 

    var editUser = function() { 
    alert(self.user.Name() + " is age of " + self.user.Age()); 
    } 

    return { 
     editUser: editUser, 
     user: user 
    } 
}) 

require(['vm'],function(vm){ 
ko.applyBindings(vm.save, document.getElementById("second")); 
    ko.applyBindings(vm.edit, document.getElementById("first")); 
}) 
+0

確定這是一個需求問題而不是Knockout綁定問題? –

回答

1

這樣做的require.js部分似乎是工作的罰款。我認爲問題在於如何在單擊按鈕時獲取對活動對象的引用。如果你做這樣的事,我認爲你會得到正確的價值:

var saveUser = function(v) { 
alert(v.user.Name() + " is age of " + v.user.Age()); 
} 

var editUser = function(v) { 
alert(v.user.Name() + " is age of " + v.user.Age()); 
} 

documentation

當調用您的處理程序,淘汰賽將提供電流模型值作爲第一個參數。如果您爲集合中的每個項目渲染一些UI,並且您需要知道點擊了哪個項目的UI,則此功能特別有用。

+0

謝謝,有趣。 – skmasq