2016-03-11 74 views
1

我想創建一個與中央服務提供程序交互的自定義​​組件應用程序,它工作正常。敲除綁定自定義組件與中央視圖模型不衝突

你可以看到在https://github.com/brianlmerritt/knockout-babel-browserify-gulp

一個例子這是寫在ES2015和編譯罰款。

問題是我希望能夠加載適用於每個頁面的中央視圖模型,當然除了具有它自己的視圖模型的組件。

我以爲我明白了http://www.knockmeout.net/2012/05/quick-tip-skip-binding.html,但是當我用<!-- ko stopBinding : true -->環繞組件時,組件無法綁定。如果我不圍繞組件,那麼我會遇到綁定衝突。

如果有人可以指示我如何以中央視圖模型不衝突的方式註冊組件,我將非常感激!

每個自定義組件與註冊:

ko.components.register(
    'component-one', 
    require('./components/component-one/component.js')); 

爲了保證中央視圖模型簡單,我只是去:

var centralViewModel = function centralViewModel() 
    { var bindingWorked = ko.observable(
     'The binding worked. KO view model centralViewModel has a this context and was bound to the html correctly'); 
}; 

可悲的是,當我做了綁定他們的衝突:

ko.applyBindings(centralViewModel(),document.body); 
ko.applyBindings(); // Pull in all of the components 

我確定必須有一種方法可以將組件拉入不與ce相沖突的方式中心視圖模型。

+0

爲什麼不第一'applyBindings'拉中的所有組件? –

+0

它確實,但綁定衝突。我需要一種方法來告訴centralViewModel不要超越它的標記並且保持單獨的組件不變 – brianlmerritt

+0

嗨@RoyJ - 問題不是中央和組件視圖模型之間的衝突 - 它是在centralViewModel中的代碼 – brianlmerritt

回答

0

看來,通過將centralViewModel應用於DOM,實際上可以避免衝突。與組件沒有衝突。問題出在centralViewModel中。

更正代碼:

ko.components.register(
    'component-one', 
    require('./components/component-one/component.js') 
); 

ko.components.register(
    'component-two', 
    require('./components/component-two/component.js') 
); 

ko.components.register(
    'component-three', 
    require('./components/component-three/component.js') 
); 
var centralViewModel = { 
    bindingWorked : ko.observable('The binding worked. KO view model centralViewModel has a this context and was bound to the html correctly') 
}; 

ko.applyBindings(centralViewModel,document.body);