【问题标题】:Breeze.js query not updating knockout view at allBreeze.js 查询根本不更新淘汰赛视图
【发布时间】:2015-06-12 16:13:48
【问题描述】:

我是 Breeze 的新手,并且正在努力将微风查询的结果链接到可淘汰的可观察数组,然后该数组在填充时不会更新视图。我找到了this questoin,这是一个类似的问题,但我的即使是第一次也不会绑定。不过,我确实尝试了该线程中建议的一些事情,但没有成功。

我一直在研究 Breeze.js ToDo 演示 (here)。使用 console.log,我的数据来自我的查询,看起来与演示代码中的数据相同。该查询正在从我正在尝试绑定到列表(最终是下拉列表)的表中提取啤酒厂列表。我在这里缺少一些小东西吗?提前感谢您的帮助!

查看型号代码:

viewModel = (function () {
    var self = this;

    self.breweries = ko.observableArray();

   function getBreweries() {
        dataService().getBreweries().then(querySucceeded).fail(queryFailed);

        function querySucceeded(data) {
            self.breweries(data.results);
        }
        function queryFailed(error) {
           alert(error);
        }
    }

   getBreweries();

});

ko.applyBindings(viewModel);

dataService 代码(在一个单独的文件中,但数据可以正常输出):

dataService = (function () {

    var serviceName = '/breeze/BeerMatch/'; //route to Breeze Web API Controller
    var manager = new breeze.EntityManager(serviceName);

    return {
        getBreweries: getBreweries
    };

    function getBreweries() {
        var query = breeze.EntityQuery.from("Breweries");

        return manager.executeQuery(query);
    }


});

最后是尝试绑定此列表的前端代码:

<script src="~/Scripts/jquery-2.1.3.js" type="text/javascript"></script>
<script src="~/Scripts/q.js" type="text/javascript"></script>
<script src="~/Scripts/knockout-3.3.0.js" type="text/javascript"></script>
<script src="~/Scripts/breeze.min.js" type="text/javascript" ></script>
<script src="~/Scripts/app/dataservice.js" type="text/javascript"></script>
<script src="~/Scripts/app/viewModel.js" type="text/javascript"></script>

<div>
    <div class="row" id="Home">
        <ul id="Breweries" data-bind="foreach: breweries">
            <li>
                <span data-bind="text: BreweryName"></span>
            </li>
        </ul>
    </div>
</div>

【问题讨论】:

  • 您是否尝试过将视图模型的关闭更改为“})();”代替 ”});” ?
  • 我刚试了一下,没用。感谢您的回复
  • querySucceeded中的数据等于什么?
  • data 是在 dataService 中执行的查询返回的内容。这是直接来自 dataService 的样子:[Brewery__Breeze_BeerMatch_Models, Brewery__Breeze_BeerMatch_Models, Brewery__Breeze_BeerMatch_Models]0: Brewery__Breeze_BeerMatch_Models1: Brewery__Breeze_BeerMatch_Models2: Brewery__Breeze_BeerMatch_Modelslength: 3__proto__: Array[0] ,这是 self.breweries 设置后的样子:function d(){if(0&lt;arguments.length)return d.Wa(c,arguments[0])&amp;&amp;(d.X(),c=arguments[0],d.W()),this;a.k.Ob(d);return c}
  • self.breweries(data.results());为您解决问题?

标签: javascript entity-framework knockout.js breeze


【解决方案1】:

我不能 100% 确定为什么会这样,但我将所有脚本声明移到了我的 Index.cshtml 文件的底部(它们之前是在顶部声明的,但在标签之外。

将它们放在我的主容器之外的底部,按照它们在原始帖子中的相同顺序解决了问题,现在一切都绑定好了。谢谢大家!

【讨论】:

    猜你喜欢
    • 2013-06-13
    • 2013-03-19
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-14
    • 2015-04-01
    • 1970-01-01
    相关资源
    最近更新 更多