2017-08-17 22 views
-1

我有幾個HTML頁面,我將其轉換爲塊HTML以便將它們注入到我的主容器中。但是,我必須使用淘汰賽的約束力,因爲ko.applyBindings (viewModel)。如果我更改jQuery $('container').html(...)不工作了嗎?如何綁定動態HTML與淘汰賽

這裏是我的代碼:

var viewModel = { 
    appView: { 
     Html: ko.observableArray() 
    } 
} 


this.loadHtmlToPage = function (htmlblock) { 
    var contentPage = function (status) { 
     this.chain = ko.observable(status); 
    } 

    viewModel.appView.Html.push(new contentPage(htmlblock)); 
} 


<div id="container" data-bind="html: chain"></div> 
+0

你不應該使用jQuery操作DOM。你應該爲鏈指定新的值,這就是包含將出現在'div#container'中的html的值。你用'chain'做的事情對我來說沒有意義,我不明白'appView.Html'應該如何適應這個方案。 –

+0

這是因爲我只需要在我的應用程序中使用一個modelView,並使用dataView,securityView,appView等子對象來包裝它們。它工作的很好,但我無法弄清楚HTML綁定... –

+0

你期望在HTML中有Knockout綁定嗎? –

回答

1

有一點是明顯,我是你設置chain是每次分配給它的時間新observable。爲了給出可觀察的新內容,您將它們作爲參數傳遞。

在您的viewModel中聲明chain,然後執行this.chain(status)來更改其內容。這些內容將成爲div#container中的新HTML。

var viewModel = { 
    appView: { 
    Html: ko.observableArray() 
    }, 
    chain: ko.observable() 
} 

this.loadHtmlToPage = function(htmlblock) { 
    var contentPage = function(status) { 
    this.chain(status); 
    } 

    viewModel.appView.Html.push(new contentPage(htmlblock)); 
} 
0
ko.cleanNode($("#conteneur")[0]); 
$("#conteneur").html('chaine'); 
ko.applyBindings(viewModel, $("#conteneur")[0]); 
+0

**來自評論**:此答案被標記爲**低質量**。雖然答案總是值得讚賞的,但它確實有助於提供一些關於您的代碼如何解決手頭問題的信息。不是每個人都可能熟悉你的確切編碼邏輯,但可以理解你的一般*方法*或*概念*。爲了幫助改進您的答案,請提供一些[**環境**](https://meta.stackexchange.com/questions/114762),並參閱關於[**寫出優秀答案**]的幫助文章( http://stackoverflow.com/help/how-to-answer)關於如何使你的答案計數的一些提示:) –

+0

'cleanNode'是[錯誤的方式](https://stackoverflow.com/a/27453338/392102)做事情。請參閱[模板綁定](http://knockoutjs.com/documentation/template-binding.html)。 –