问题标签 [knockout-es5-plugin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
731 浏览

javascript - 淘汰赛绑定处理程序传递对象数组

是否可以为绑定处理程序传递带有方括号的数组值?,即:

它适用于一个对象:

类值是不可观察的,只是 javascript 对象。

它抛出Message: Unexpected token )错误。

或者我需要一些其他语法?我可以用对象包裹它,但不喜欢。

我为这个问题拍摄了项目快照,可在此处获得:http: //balin.maslosoft.com/array-validators/dev/validator.php

打开控制台,对象验证器将显示配置,而数组将失败。

这是最小的例子:http: //jsfiddle.net/piotr/fu8d0hm3/

0 投票
2 回答
90 浏览

knockout.js - 使用 knockoutjs es5 从数组中删除项目

小提琴

我正在尝试将 knockout.js 与 ES5 插件一起使用,但我无法从数组中删除来工作。

它似乎有点工作,你可以删除,但数组中总是剩下一个项目,但不是真的不知何故。我完全困惑为什么这不像你想象的那样工作。

我究竟做错了什么?

(我有一个使用 durandal 小部件的更复杂的场景,但我能够将其归结为这个,所以我认为 es5 插件是罪魁祸首)

这是我的标记:

和脚本:

现实世界中唯一的其他区别是我从 API 调用中获取数据,但行为是相同的。

0 投票
1 回答
792 浏览

javascript - Require JS with Knockout components 在不正确的路径中寻找 js 文件

我试图通过构建淘汰组件来了解 require js 的工作原理。我已经构建了 2 个单独的淘汰组件进行测试。我的目录结构如下:

我在 app.js 文件中配置了 require.js 如下

这是我的 startup.js 文件

});

出于测试目的,我的 like-widget.js 和 sign-in.js 文件几乎相同

});

});

这就是我在我的 html 页面中引用 require.js 的方式

问题是我的like-widget 组件工作正常,但是一旦我尝试使用我的登录组件,就会出现错误

获取http://localhost:65182/App/Components/knockout.js

未捕获的错误:“knockout”的脚本错误,需要:kox http://requirejs.org/docs/errors.html#scripterror

从错误看来,requirejs 试图从不正确的位置加载敲除,我的 knockout.js 不在组件目录中,而是在脚本目录中。我不明白的是它是如何正确加载like-widget 组件的?

我是requirejs的新手,所以我假设我犯了一些幼稚的错误,你能指出来吗?

0 投票
1 回答
100 浏览

knockout.js - 无法写入在 knockoutjs 组件内作为参数接收的 observable

当我们将 KO 组件作为参数传递时,它会接收到 observable 的引用。当组件接收它作为参考时,您可以写入此可观察对象,它将反映在您的视图模型上;但是,当您使用 ko-es5 插件(超级棒)时,您的 KO 组件而不是接收也对您的 observable 的引用会接收某种 computeObservable,我们无法写入它。这是意外的行为吗?

仅使用淘汰赛尝试

http://jsfiddle.net/kapuca/k0fw8w18/

尝试使用敲除 + ko-es5 插件

http://jsfiddle.net/kapuca/jwea6zaL/

0 投票
2 回答
145 浏览

knockout.js - 如何获得淘汰赛以更新定义的属性?

考虑这个打字稿类(但我认为打字稿与问题无关,除了掩盖底层defineProperty调用):

请注意,我正在使用映射插件。

link酒店使用电流TeamId为该团队建立合适的链接。我的问题是:我如何告诉淘汰赛当TeamId属性发生变化时,属性也会发生变化link?我认为subscribe回调会做到这一点,但getObservable返回 null。我猜这是因为它不适用于使用defineProperty. 但现在我被卡住了,因为我想使用这种语法但不能让它工作。

0 投票
1 回答
359 浏览

typescript - 淘汰 es5 分型

我正在尝试更新我的敲除打字,因为最新版本的打字稿正在检测旧打字稿的问题。

问题在于试图让 knockout 和 knockout.es5 类型一起工作。

我正在使用 VS2017 和 tsconfig 文件。

我像这样安装淘汰赛类型:

然后我像这样安装敲除-es5类型:

在我安装了淘汰赛 es5 类型后,它们会出现编译错误,因为没有这样的类型KnockoutObservable<T>

所以我将这个添加到了敲除 es5 类型的顶部:

并更改KnockoutObservable<any>ko.Observable<any>现在可以编译。

所以..现在我想使用这些类型来创建一个淘汰视图模型,所以在一个新的打字稿文件中:

这会导致编译错误,因为tracktypeof ko

这是因为 ko 是从knockout模块中导入的,该模块是从类型中导出的knockout,但是track它是一种方法,应该由类型添加knockout-es5,但不是。如何进一步修改 knockout-es5 分型文件以使其正常工作?

更新:我尝试将其添加到 knockout.es5/index.d.ts 文件的底部:

在我的打字稿文件中,我正在尝试:

但是 import 语句不会编译:它说cannot find module knockout-es5.

我也试过这个:

这似乎可行,但是我必须更改我的代码才能做到这一点,这对我来说似乎是错误的(注意附加的.ko

而且一旦我这样做了,我就不能再解析koko.Observable.