首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery UI与HotTowel的结合

jQuery UI与HotTowel的结合
EN

Stack Overflow用户
提问于 2013-11-01 21:23:31
回答 1查看 349关注 0票数 1

在过去的十年里,我已经有点脱离了网络开发,我被所有我必须追赶的新技术所淹没,ASP.NET,MVC,jQuery,SPA,Knockout等等。我不知道关于jQuery的第二件事,我对ASP.NET的经验是非常有限的。我对ASP.NET WebForms有点熟悉,但是MVC (以及其他的)对我来说是全新的。

在看到了有多少技术,而且不知道在我的新项目中应该探索哪条路线之后,我发现热毛巾似乎是一个模板,它将所有最新的东西整合到一个很好的包中,所以我决定获得热毛巾模板,并使用它启动一个ASP.NET MVC4 SPA项目。

现在,我正在尝试集成我们的内部UI框架(在过去几年中,它一直在没有我的情况下开发)。我决定尝试更新热毛巾模板中的详细信息页面,以获得一些内容。我添加了一个简单的<span>,一切都很好。但是,如果我试图添加我理解为基于jQuery小部件的组件(?),我将一无所获。即使是最简单的通过jQuery添加内容的测试,我也什么也得不到:

代码语言:javascript
复制
<section>
    <h2 class="page-title" data-bind="text: title"></h2>
    <span>Test this</span>
    <div id="testDiv"></div>
    <script type="text/javascript">
       $("#testDiv").append("Testing");
    </script>
</section>

我看到了span,但没有看到修改过的div。而且我在源代码(“查看源”)或IE9控制台中看不到任何这样的内容(考虑到SPA的性质,这并不奇怪,但我应该做些什么呢?)而且检查器似乎完全无用(无法通过启动屏幕)。

在HotTowel/jQuery/MVC/SPA/KockoutJS/Breeze/Durandal模型下向UI添加元素的适当方法是什么?所有这些新框架都把我逼疯了。

编辑一些更多的细节:当我将jQuery内容移到SPA的主页时,它工作得很好,但是当我将它放在Details“页面”上时,它就不工作了。我怀疑这与这个应用程序的SPA性质以及备用视图的内容如何传递有关,而不是作为整个页面,而是作为主页面的更新内容。

经过进一步调查,编辑发现了一个名为" detail“的视图模型的存在,它可能与我发布的详细视图代码有关。这是视图模型中的代码:

代码语言:javascript
复制
define(['services/logger'], function (logger) {
    var title = 'Details';
    var vm = {
        activate: activate,
        title: title
    };

    return vm;

    //#region Internal Methods
    function activate() {
        logger.log(title + ' View Activated', null, title, true);
        return true;
    }
    //#endregion
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-04 00:15:25

脚本可能正在执行,但找不到div。要纠正操纵div,将jquery代码放入函数中,并使用附加/组合回调(duranadal2.0)或viewAttached回调(durandal1.x)触发该函数。

1.x连结- https://github.com/BlueSpire/Durandal/blob/master/docs/1.2/Composition.html.md#view-attached

2.0链接- http://durandaljs.com/documentation/Hooking-Lifecycle-Callbacks/

代码语言:javascript
复制
  // in your detail view model, if using durandal 1.x
  define(['services/logger'], function (logger) {
    var title = 'Details';
    var vm = {
        activate: activate,
        title: title,
        viewAttached : function(view){
                      // view is the root element of your detail view and is passed in 
                      // by durandal
                       $(view).append("Testing");
                     }
    };

    return vm;

    //#region Internal Methods
    function activate() {
        logger.log(title + ' View Activated', null, title, true);
        return true;
    }
    //#endregion
  });

  // in your detail view model, if using durandal 2.0, you have two options
  define(['services/logger'], function (logger) {
    var title = 'Details';
    var vm = {
        activate: activate,
        title: title,
        attached : function(view, parent){
                       // view is the root element of your detail view
                       // and is passed in by durandal
                       $(view).append("Testing first method");
                     },
        compositionComplete: function(view, parent){
                       // view is the root element of your detail view
                       // and is passed in by durandal
                       $(view).append("Testing second method");
                     }
    };

    return vm;

    //#region Internal Methods
    function activate() {
        logger.log(title + ' View Activated', null, title, true);
        return true;
    }
    //#endregion
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19735621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档