define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {
return {
displayName: 'Flickr',
Value: ko.observableArray([]),
js : $.getJSON("http://localhost:XXXXX/api/File/Get", function (result) {
self = this;
self.Value = result;
console.log(JSON.stringify(self.Value));
//[{"ID":1,"Name":"a","Type":"text","Size":123},{"ID":1,"Name":"a","Type":"text","Size":123},{"ID":1,"Name":"a","Type":"text","Size":123}]
}),
我的Drundal SPA应用程序中的上述代码(flick.js),我的(flick.html)包含以下代码
<ul class="thumbnails" data-bind="foreach: Value">
<li data-bind=" text: Name ">
</li>
</ul>
但是当我执行此代码时,我没有在我的html文件中获取名称列表
出了什么问题 任何人都可以帮助我答案 0 :(得分:2)
这里有两个问题。第一个 - 您错误地为observableArray
分配值,observableArray
是一个函数,因此您必须使用()
为其赋值。第二,你在自我中有错误的背景。将self的初始化移至js
函数的顶部:
define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {
return {
displayName: 'Flickr',
Value: ko.observableArray([]),
js : function() {
var self = this;
$.getJSON("http://localhost:XXXXX/api/File/Get", function (result) {
self.Value(result);
console.log(JSON.stringify(self.Value()));
})
}}
答案 1 :(得分:1)
您必须设置值可观察,而不是重新创建它。 您还可以创建一个保持“自我”引用的对象。
define(['plugins/http', 'durandal/app', 'knockout'], function (http, app, ko) {
var VM = function () {
self = this;
self.displayName = 'Flickr';
self.Value = ko.observableArray([]);
self.js = $.getJSON("http://localhost:XXXXX/api/File/Get", function (result) {
self.Value(result);
});
};
return new VM();
}),
我希望它有所帮助。