2014-05-04 136 views
1

我使用的是敲除comment binding(稱爲:無容器控制流語法)。然而,它在瀏覽器中正常工作,但不在Windows 8商店應用程序中。 Visual Studio會清除所有評論嗎?有什麼方法可以使用註釋綁定?Windows 8商店應用程序和ko註釋綁定

<ul data-bind="foreach: journal"> 
    <!-- ko if: typeof $data!=='string' --> 
    <li data-bind="text:Name"></li> 
    <!-- /ko --> 
    <!-- ko if: typeof $data==='string' && $data!='' --> 
    <li data-bind="text:$data"></li> 
    <!-- /ko --> 
</ul> 

錯誤是:Name is undefined

如果我提出以下,名稱定義:

<ul data-bind="foreach: journal"> 
    <li data-bind="text:Name"></li> 
</ul> 

有沒有辦法使用在Windows 8商店應用程序的無容器控制流語法?


解決方案

我發現這個great tutorial的解決方案。

我用jQuery加載數據之前我用ko綁定它。雖然這個加載,Windows似乎刪除不安全的代碼。用下面的函數,我能夠追加了「不安全」的代碼:

$.ajax({ 
    url: "msappx://journal.html", 
    success: function (data) { 

    if (typeof winjs !== undefined) { 
    MSApp.execUnsafeLocalFunction(function() { 
     $(jqAppendTo).append(data); 
    }); 
    } 
    else { 
    $(jqAppendTo).append(data); 
    } 

    } 
}); 
+0

我不知道有關Windows 8商店應用程序,但有一個aspx頁面,KO containe沒有約束力的工作 –

回答

0

你可以使用一個計算的觀察到的,簡化您的淘汰賽模板...

<ul data-bind="foreach: fitered_journal"> 
    <li data-bind="text: $data"></li> 
</ul> 

搭配...

$ -> 

    viewmodel = -> 
     self = this 

     self.journal = ko.observableArray([ 
      '', 
      'Some string data', 
      {Name: 'other string data'} 
     ]) 

     self.fitered_journal = ko.computed(-> 
      items = [] 
      for item in self.journal() 
       if typeof item isnt 'string' 
        items.push(item.Name) 
       else if typeof item is 'string' and item isnt '' 
        items.push(item) 
      return items 
     ) 

    ko.applyBindings(viewmodel) 

這裏有一個fiddle

+0

thx爲您的幫助。無論如何,上面的例子被簡化了。通常情況下,字符串綁定更復雜。但是我發現我的錯誤。 –

相關問題