【问题标题】:Hottowel SPA viewmodel and jqueryHottowel SPA 视图模型和 jquery
【发布时间】:2013-03-14 16:36:10
【问题描述】:

下面是热毛巾视图模型。 我想弄清楚在哪里以及如何进行 jquery 调用

define(['services/logger'], function (logger) {
    var vm = {
        activate: activate,
        title: 'Applications'
    };

    return vm;

    //#region Internal Methods
    function activate() {
        logger.log('Applications', null, 'applications', true);
        return true;
    }
    //#endregion
});

【问题讨论】:

    标签: jquery viewmodel hottowel


    【解决方案1】:

    我想知道的是“为什么要在 ViewModel 中使用 jQuery?” jQuery 用于 DOM 操作。好吧,我们已经通过绑定为我们解决了这个问题。我们不应该需要 jQuery。在 ViewModel 中使用 jQuery 通常(并不总是)是一种代码异味。我的经验法则是“如果我使用 jQuery,我做错了”。

    【讨论】:

    • Ward,谢谢,我仍在思考所有这些 MVVM、SPA、Durandal Hottowel 的东西。很好的建议,我会记住的。
    • 有例外,正如沃德所说。尽量避免它,但有时它会发生,我可以接受。
    • 要使用一些 3rd 方 UI 库/小部件,通常需要 jQuery 来启用它们。我们可以将特定于 jquery 的代码直接放在脚本标记内的视图 (html) 上,但为了利用 Visual Studio 上的调试,我更喜欢将 JS 代码放在视图模型内的 viewAttached 上。也许是代码味道,但就像@JohnPapa 所说,有时它会发生。
    • 我们都生活在气味中。但是,当您一只手在键盘上,另一只手捏着鼻子时……是时候问问自己,您是否真正理解 数据绑定消除了 VM 中对 jQuery DOM 操作的需要。当您发现自己在 VM 中编写 jQuery 时,请考虑将其移到它所属的自定义 KO 绑定中。您可以像调试 VM 一样轻松地调试自定义绑定。绑定逻辑是 DOM 操作所属的地方。
    • viewAttached:viewAttached!
    【解决方案2】:

    取决于您希望它在哪里运行。如果您希望 jquery 代码在 viewmodel 激活时执行,则将其放在 activate 方法中。如果希望它运行一次,则在创建视图模型时,将其放在 return 语句之前。

    【讨论】:

    • 谢谢约翰!现在我知道在哪里放置 HT SPA 问题 ;) --LastTribunal.
    猜你喜欢
    • 1970-01-01
    • 2013-04-11
    • 2013-03-16
    • 2013-04-10
    • 1970-01-01
    • 2013-02-15
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多