【问题标题】:Knockout JS Json get淘汰赛 JS Json 得到
【发布时间】:2015-06-02 03:36:41
【问题描述】:

我是knockout.js 的新手,我有一个问题。我找到了一些代码here。我的 get 函数返回 {"id":"1", "name":"cardio", "image":"aslas", "header":"Kardio", "message":"message\r\n"} 但它不起作用。谁能帮我?谢谢

         <ul class="folders" data-bind="foreach: folders">
    <li data-bind="text: $data,
               css: { selected: $data == $root.chosenFolderId() },
               click: $root.goToFolder"></li>
</ul>
<div class="mails" data-bind="with: chosenFolderData">
    <p><label>From</label>: <span data-bind="text: name"></span></p>
</div>

<script>
    function WebmailViewModel() {
        // Data
        var self = this;

        self.folders = ['cardio', 'classic', 'mass', 'abs']

        ;
        self.chosenFolderId = ko.observable();
        self.chosenFolderData = ko.observable();
        self.chosenMailData = ko.observable();
        // Behaviours
        self.goToFolder = function(folder) {
            self.chosenFolderId(folder);
            self.chosenMailData(null);
            $.get(ajax_url+'Dieticians/video/'+folder,null, self.chosenFolderData);
        };
        self.goToFolder('Inbox');

    };

    ko.applyBindings(new WebmailViewModel());
</script>

【问题讨论】:

  • 看起来对我有用,请查看jsfiddle.net/supercool/LkqTU/23414。如果您特别在寻找某些东西,请告诉我们,干杯
  • 试试这个上面的小提琴看起来因拼写错误而损坏。 jsfiddle.net/supercool/LkqTU/23416
  • 当您单击文件夹按钮时,它会从服务器获取 json 并将其写入 span? @supercool
  • 是的,您只需调用 ajax 即可动态获取您的数据并推送到self.chosenFolderData。
  • 是的,你说得对; self.chosenFolderData({'name':folder}); > $.get(ajax_url+'Dieticians/video/'+folder,null, self.chosenFolderData);它返回 "{"id":"1","name":"cardio","image":"aslmk\u015fga\u015fgkl","header":"Kardio","message":"message text"} ” 。但不要在跨度中写任何东西。 @supercool

标签: javascript php jquery json knockout.js


【解决方案1】:

这是你要找的吗?:http://jsfiddle.net/58tkrbd9/3/

<ul class="folders" data-bind="foreach: folders">
        <li data-bind="text: $data,
                   css: { selected: $data == $root.chosenFolderId() },
                   click: $root.goToFolder"></li>
    </ul>
    <br>
    <div class="mails" data-bind="with: chosenFolderData">
        <p><label>From</label>: <span data-bind="text: name"></span></p>
    </div>
    <script type="text/javascript">
        function WebmailViewModel() {
            var self = this;

            self.folders = ko.observableArray(['cardio', 'classic', 'mass', 'abs']);
            self.chosenFolderId = ko.observable();
            self.chosenFolderData = ko.observable();
            self.chosenMailData = ko.observable();
            // Behaviours
            self.goToFolder = function(folder) {
                console.log(folder);
                self.chosenFolderId(folder);
                self.chosenMailData(null);
                //apply you ajax call and fill 'chosenFolderData' 
                self.chosenFolderData({"id":"1", "name":"cardio", "image":"aslas", "header":"Kardio", "message":"message\r\n"});  
            };
            self.goToFolder('Inbox');
        };

        ko.applyBindings(new WebmailViewModel());
    </script>

【讨论】:

  • 是的,但是当我使用时:$.get(ajax_url+'Dieticians/video/'+folder,null, self.chosenFolderData);它不工作。 @Kelvin17
  • $.ajax({ url:ajax_url+'Dieticians/video/'+folder, dataType: 'json', success:function(data) { self.chosenFolderData(data); } });
  • 如果你想设置它的值,你已经选择了FolderData 作为一个可观察的值,你必须像这样说 self.chosenFolderData( [valueyouwant] ) 在你在 ajax 请求成功时创建的匿名函数中,看:api.jquery.com/jquery.get希望这有帮助
猜你喜欢
  • 2014-09-29
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2018-08-13
  • 2013-08-14
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
相关资源
最近更新 更多