2016-04-05 5 views
0

私はクライアント開発環境で作業しており、コーディング標準に準拠しなければなりません。私は次のJSとHTMLを持っています。私のobservableArrayは定義されていません来ています。私はそれを働かせることができません。 console.logでも正しい値が出力されています。observableArrayが定義されていません

ko.applyBindingsについてはご安心ください。世話をしている。

私のJSコード:

define(
    ['knockout'], 
    function (ko) { 
     "use strict"; 
     return { 
      onLoad: function (widget) { 
       widget.getDetails= function (prod) { 
        var abc = prod.DetailsNumbers(); 
        console.log(abc); 
        var someArray= []; 
        someArray= abc.split(','); 
        //console.log(someArray); 
        var anotherObservableArray = ko.observableArray(); 

        for (var i = 0; i < someArray.length; i++) { 
         var temp = { 
          "prodName": ko.observable(someArray[i]) 
         }; 
         anotherObservableArray.push(temp); 
        } 
        console.log(anotherObservableArray()); 
       }; 
      } 
     } 
    } 
); 

私のHTMLコード:

<div id="someId"> 
    <table> 
     <tbody> 
      <tr> 
       <td>Button Here</td> 
       <td><button data-bind="click: getDetails(product())">Click me</button></td> 
      </tr>// this here is working fine 
     </tbody> 
    </table> 
    <ul data-bind="foreach: anotherObservableArray"> // this doesnt work 
     <li> 
      <span data-bind="text: prodName"> </span> 
     </li> 
    </ul> 
</div> 

anotherObservableArrayがあなたのVMの定義に

+0

@ user3297291これは処理されています。それも質問に加えました。 – user2281858

+0

私はあなたがそれを追加したことに気づいたので、私はコメントを削除しました。あなたの質問は、HTMLのバインディング・コンテキストが本当に何であるかを明確にしていません。 'getDetails'は' anotherObservableArray'という観測可能な配列を作成しますが、メソッドのスコープ内にのみ存在します。 – user3297291

+0

@ user3297291どうすればグローバルスコープのアレイにすることができますか? – user2281858

答えて

1

を基本的にはあなたのコードは、このフォーマットは次のとおりです。

{ 
    onLoad: function (widget) { 
    widget.getDetails = function (prod) { 
     var anotherObservableArray = ko.observableArray(); 
     // push some items into the array 
     console.log(anotherObservableArray()); 
    }; 
    } 
} 

あなたが何らかの形で必要機能の外にanotherObservableArrayを公開します。例:

{ 
    onLoad: function (widget) { 
    widget.getDetails = function (prod) { 
     var anotherObservableArray = ko.observableArray(); 
     // push some items into the array 
     console.log(anotherObservableArray()); 
     this.anotherObservableArray = anotherObservableArray; // Expose it on the function 
    }; 
    } 
} 
+0

...しかし、私は新しい問題に直面しています。ここをクリックhttp://stackoverflow.com/questions/36434173/observablearray-not-updating-the-ui – user2281858

1

移動var anotherObservableArray = ko.observableArray();を定義し、それが露出していますことを確認されていない(つまり、 "パブリック")。私はあなたがこのような何か持っているか想像しています:あなたはそれで宣言する関数スコープ外anotherObservableArrayを公開していない

var vm = { 
    // ... 
    // most likely you are exposing getDetails() already 
    // .... 

    anotherObservableArray: ko.observableArray() 
}; 

// ... 

ko.applyBindings(vm); 
関連する問題