如果您需要更多信息或希望我澄清任何内容,请通知我.我已经尝试了很多不同的事情来解决这个问题,但是还没有找到解决方案.

我对angularJS来说比较新,我正在尝试构建一个包含多层数据的应用程序.我有一些基本的用户信息存储在控件PageController上的body的范围内.然后我有一个设置表单加载使用$routeParams(与控制器SettingsController),其中包含一些用于模板目的的自定义指令.由于这些指令是嵌套的,所以我使用transclusion来加载第二个指令.这一切似乎都很好.

我的问题是我试图从最内层的指令中引用user.firstname的字段,并希望使用双向数据绑定来允许对文本框进行的更改导致PageController范围内的值也改变.我知道很多这样的问题是在ng模型中使用原语引起的,但是我已经尝试将所有内容放在一个额外的对象中,以便触发原型继承无效.我在这里做错了什么?

这是我的代码中的一个JSFiddle,尽可能地剥离了这个问题.在这个例子中,如果我输入外部的文本框,它直接在PageController范围上,它将修改内部文本框,直到该文本框被修改为止,连接断开.这似乎就像其他问题中所描述的使用原语的问题一样,但是我无法确定问题出在哪里.

HTML:

<body class="event-listing" ng-app="app" ng-controller="PageController">
    <div class="listing-event-wrap">
        <input type="text" ng-model="user.firstname" />
        <div ng-controller="SettingsController">
            <section block title="{{data.updateInfo.title}}" description="{{data.updateInfo.description}}">
                <div formrow label="{{data.updateInfo.labels.firstname}}" type="textInput" value="user.firstname"></div>
            </section>
        </div>
    </div>
</body>

角度指令:

app.directive('formrow',function() {
return {
    scope: {
            label: "@label",type: "@type",value: "=value" 
    },replace: true,template: '<div class="form-row">' + 
            '<div class="form-label" data-ng-show="label">{{label}}</div>' + 
            '<div class="form-entry" ng-switch on="type">' + 
                '<input type="text" ng-model="value" data-ng-switch-when="textInput" />' + 
            '</div>' + 
        '</div>'
}
});
app.directive('block',function() {
return {
    scope: {
            title: "@title",description: "@description" 
    },transclude: true,template: '<div class="page-block">' +
            '<h2 data-ng-show="title">{{title}}</h2>' + 
            '<p class="form-description" data-ng-show="description">{{description}}</p>' + 
            '<div class="block-inside" data-ng-transclude></div>' + 
            '</div>'
}
});

角度控制器:

app.controller("PageController",function($scope) {
    $scope.user = {
        firstname: "John"
    };
});
app.controller("SettingsController",function($scope) {
    $scope.data = {
        updateInfo: {
            title: "Update Your information",description: "A description here",labels: {
                firstname: "First Name"
            }
        }
    }
});

解决方法

对于以前的代码我很抱歉试试这个: http://jsfiddle.net/CxNc2/2/

我现在不用传递实际的值,而是将对象的指针传递给正确的值.我在这里添加了’refobject’:

<body class="event-listing" ng-app="app" ng-controller="PageController">
    <div class="listing-event-wrap">
        <input type="text" ng-model="user.firstname" />
        <div ng-controller="SettingsController">
            <section block title="{{data.updateInfo.title}}" description="{{data.updateInfo.description}}">
                <div formrow label="{{data.updateInfo.labels.firstname}}" type="textInput" refobj='user' value="firstname"></div>
            </section>
        </div>
    </div>
</body>

我在这里添加了refobj值:

app.directive('formrow',function() {
    return {
        scope: {
            label: "@label",value: "@value",refobj: "="
        },template: '<div class="form-row">' + 
            '<div class="form-label" data-ng-show="label">{{label}}</div>' + 
            '<div class="form-entry" ng-switch on="type">' + 
        '<input type="text" ng-model="refobj[value]" data-ng-switch-when="textInput" />' + 
            '</div>' + 
        '</div>'
    }

JavaScript – AngularJS嵌套指令中的双向数据绑定的更多相关文章

  1. angularjs – 更新数组时如何避免刷新ng-repeat DOM列表

    因此,“trackby”实际上将检查传入对象的属性并替换旧对象并仍然保留id.这很激烈.值得注意的是,“trackby”也适用于除ng-repeat之外的其他指令,例如select.我做了一个小小的演示,对于那些可能会对一切如何运作感到困惑的人……

  2. angularjs – 解释ngModel管道,解析器,格式化程序,viewChangeListeners和$watchers的顺序

    换句话说:如果在模型更新之前触发了“ng-change”,我可以理解,但是我很难理解在更新模型之后以及在完成填充更改之前触发函数绑定属性.如果您读到这里:祝贺并感谢您的耐心等待!

  3. angularjs – 未知提供程序从Angular 1.0切换到1.2.3

    在AngularJS1.2.1中,路径模块已在单个文件angular-route.min.js中拉出,您需要根据发布的错误添加对此文件的引用和angular-sanitize.min.js.您还需要在应用程序中注入ngRoute和ngSanitize:

  4. angularjs – 在测试angular指令时,isolateScope()返回undefined

    使用Angularv1.2.25和rails资产管道,我试图测试指令的隔离范围确实已经更新.由于isolateScope()返回undefined我得到预期未定义的定义…

  5. AngularJS在自定义指令中包含ui-select

    我设法通过在模板中设置ng-model来进行绑定工作

  6. angularJs的国家选择控制

    p=preview使用ng-option指令使用ng-repeat指令:控制器中的国家范围:

  7. angularjs – 如何使用jasmine测试$timeout操作的持续时间?

    假设我在指令中有以下匿名功能:这成功了.现在,如果我想编写一个测试,使用jasmine,以确保在~2s后删除该类,将如何做?我应该补充一点,到目前为止我尝试过使用jasmine.Clock和waitsFor方法,在这两种情况下,测试都失败了.值得注意的是,当我在指令中将$timeout更改为setTimeout时,两个测试都已通过,因此angular的行为似乎在这里发挥作用..从1.2$timeout.flush()开始,需要一个延迟参数来模拟类似于jasmine.Clock模拟的时钟,但是以一种使Ang

  8. AngularJS – 在指令中加载动态模板HTML

    我有一个指令从外部HTML文件加载内容.传递给该指令的是一些范围数据,用于呈现该HTML片段.例如

  9. angularjs – 如何使用webpack编译角度模板?

    我们的想法是从所有html文件中获取1个JS文件.之后通过require使用它:你能分享一下你的体验吗?我正在谷歌搜索它,发现几个装载webpack但不知道该使用什么.我决定将web-pack的ng-cacheloader与ES2015语法一起使用:它意味着从而不是require导入.我的webpack配置的一部分:以及带模板的指令示例:

  10. angularjs google maps – 带窗口的标记 – infowindow不显示

    尝试使用angular-google-maps获取应用:–通过markers指令的多个标记–通过window指令的单个infowindow我已经通过API和git-hub网站上的多个已关闭的问题/问题,但是无法让它正常工作…我认为这是我将窗口html连接到控制器数组和函数的方式?任何帮助表示赞赏.附:api文档examples似乎已过时,因为它们不在示例中使用show,而是使用options.visible来显示和隐藏infowindows–但是所有issues/examples建议使用show代替?

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部