1
使用Knockout組件+ Asp.Net MVC時,下面的代碼片段是一個很好的實踐嗎?任何缺點,我可能會失蹤?通過Razor向Knockout組件注入依賴關係
是使用剃刀服務器端呈現基本上注入KO組件依賴性(主要是初始數據)的一部分...
代碼段:
<my-component params="{
foo: '@Model.FooProperty',
bar: '@Model.BarProperty',
baz: @Json.Encode(@Model.SomeArray)
}"> </my-component>
編輯:
對於避免了@Quango指出的字符串轉義問題,我實現了這個幫助程序:
public static stringEscapeString(this HtmlHelper helper, string value)
{
return HttpUtility.JavaScriptStringEncode(value, true);
}
用法:
<my-component params="{
foo: '@Html.EscapeString(Model.FooString)', ...
我會謹慎注入字符串值而不使用轉義機制 - 例如如果'Model.FooProperty =「O'Brien」'你會得到一個渲染錯誤。除此之外,唯一的另一種方法是使用viewModel值,這可能不合適(如果值不變) – Quango
@Quango:使用viewModel值的含義是什麼? – Daniel
Knockout可以將'params'部分中的值綁定到文字值(如您的示例中)或在Knockout視圖模型中綁定值(如果存在)。所以傳遞給組件的foo將是一個可觀察的值,組件可以看到更改。我的小提琴頁面上的例子,例如https://jsfiddle.net/Quango/tnphvvgd/ – Quango