1

私はデュランダルが初めてです。durandal が提供するデモアプリに、ミモザの骨格を使って新しいモジュールを追加しようとしていました。

このモジュールの次の手順を作成しまし

<li>データバインドに関連付けられたアプリを実行すると、DOM に入力されません。つまり、ページにデータは表示されません。

しかし、console.log を使用して myPage.js 内のデータを出力すると、必要な出力が得られました。

私のモジュールbackend.js

define(function(require){
  return {
    getCustomers:function(){
      //do some ajax and return a promise
        return $.ajax({
          url: 'http://graph.facebook.com/facebook?callback=?',
          dataType: 'json',
        }).promise();
    }
  };
});

私の myPage.js

define(function (require) {
    var backend = require('backend');
    var ko = require('knockout');

    return {
        customer:ko.observableArray([]),
        activate:function(){
          var that = this;
          return backend.getCustomers().then(function(result){
            that.customer(result);
          });
        }
      };
});

myPage.html

<div>
  <h2>FB Page Detail</h2>
  <ul data-bind="foreach: customer">
    <li data-bind="text: name"></li>
  </ul>
</div>

得られた結果

{"about":"Facebook's mission is to give people the power to share and make the world more open and connected.","category":"Product/service","company_overview":"Newsroom: http://newsroom.fb.com\nInvestor Relations: http://investor.fb.com/","founded":"February 4, 2004","is_published":true,"talking_about_count":207120,"username":"facebook","website":"http://www.facebook.com/facebook","were_here_count":0,"id":"20531316728","name":"Facebook","link":"http://www.facebook.com/facebook","likes":96174118,"cover":{"cover_id":"10151496277356729","source":"http://sphotos-a.ak.fbcdn.net/hphotos-ak-ash2/s720x720/247388_10151496277356729_2043388331_n.jpg","offset_y":0,"offset_x":0}} 

私は何を間違えましたか?この問題を解決するにはどうすればよいですか?

4

2 に答える 2

1

ここでの問題は、デュランダルではなくknockoutJSをどのように使用しているかについてだと思います.. object(単一のオブジェクト)をあなたに渡していますobservableArray..オブジェクトの配列または1つのオブジェクトの配列を渡す必要があります..

問題を再現するための 簡単なデモを作成しました..

結果が表示されないことに注意してください。ただし、データの周りに魔法 []をかけて単一オブジェクトの配列にすると、Facebook名前が表示されます

于 2013-10-31T10:59:34.337 に答える
-1

ここでバインディングをどのように適用したかわからない場合は、ビューモデルでモデルが顧客プロパティに設定されているため、使用する必要がある場合があります。
data-bind="html:customer.name"

于 2013-10-31T09:03:28.373 に答える