AngularJS 指令从控制器访问属性

2024-02-04

我正在尝试访问控制器函数中指令的属性。然而,当我访问它时,它是未定义的。我注意到如果我做一个简单的计时器它就可以工作。有没有办法仅在指令及其范围准备好并设置为使用之后才执行代码?

我摆弄了它。确保您的控制台已打开。http://jsfiddle.net/paulocoelho/uKA2L/1/ http://jsfiddle.net/paulocoelho/uKA2L/1/

这是我在小提琴中使用的代码:

<div ng-app="testApp" >
    <testcomponent text="hello!"></testcomponent>
</div>
var module = angular.module('testApp', [])
    .directive('testcomponent', function () {
    return {
        restrict: 'E',
        template: '<div><p>{{text}} This will run fine! </p></div>',
        scope: {
            text: '@text'
        },
        controller: function ($scope, $element) {
            console.log($scope.text); // this will return undefined
            setTimeout(function () {
                console.log($scope.text);    // this will return the actual value...
            }, 1000);
        },
        link: function ($scope, $element, $attrs) {
            console.log($scope.text);
            setTimeout(function () {
                console.log($scope.text);
            }, 1000);
        }
    };
});

有效的是,如果你设置

scope.text = $attrs.text;

在链接和控制器功能内部。这仅在最初有效,因为没有 2way 数据绑定。您可以使用$attrs.observe https://docs.angularjs.org/api/ng/type/%24compile.directive.Attributes though.

参见小提琴:http://jsfiddle.net/JohannesJo/nm3FL/2/ http://jsfiddle.net/JohannesJo/nm3FL/2/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 指令从控制器访问属性 的相关文章

随机推荐

  • Dart 包 - 如何隐藏公共类中的内部方法?

    我正在开发一个关于 Flutter 的包 我在类中有一些方法仅对包本身有用 对导入我的包的程序员没有用 是否可以在公共类中隐藏这些方法以进一步实现 我正在尝试使用 internal注释 但我仍然可以看到标记为包外部内部的方法 Example
  • Java 中的枚举是否允许有 setter?

    我有一个enum它有一个参数 字段 是String 我可以在这个领域拥有二传手吗 public enum Blah Monday a Tuesday b private final String letter Blah String let
  • 对 csv 文件进行排序

    我有一个 csv 文件 需要对其进行排序 该文件如下所示 ID Name Surname Age Salary 1 John Asben 33 1000 2 Adam Smith 22 1200 3 Amanda J 22 2000 4 G
  • 扩展程序和小书签的内容安全策略

    Github有以下内容内容安全政策 https w3c github io webappsec specs content security policy 内容安全策略 默认 src 脚本 src asset cdn github com
  • 无法在 Yosemite DP 7 上安装 Cocoapods

    我在安装在单独分区上的 Yosemite DP 7 上安装 Cocoapods 时遇到问题 我已经尝试按照上找到的说明进行操作Cocoapods 与 Xcode 6 和 10 10 Yosemite https stackoverflow
  • 使用 JavaScript 获取 div id

    这是一些 HTML div class results div something div div something else div div blah blah blah div div etc div div 现在如果我可以使用 jQ
  • 从多个 hdf5 组创建数据集

    从多个 hdf5 组创建数据集 团体代码 np array hdf get all my groups 然后我添加了用于从组创建数据集的代码 with h5py File train h5 w as hdf hdf create datas
  • SQLite 内存数据库的优点[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我今天从一本关于 SQLite 的书中读到了关键字 memory 但它只说了它是什么 如何使用 而且解释太短了 所以我在这里搜索了更多
  • React js 日期选择器的多个实例

    如果我使用日期选择器的多个实例 我在更新反应日期选择器上的日期时遇到问题 日期选择器组件
  • 在Python中快速找到给定大小的所有连通子图的方法?

    注 快速解决方案在answer https stackoverflow com a 75751315 12842085然而 需要进一步改进速度 给定一个无向稀疏连接图G with n顶点 我正在寻找一种快速的方法来找到所有连接的子图G wi
  • 使用 SSH 的 Laravel MySql 数据库连接

    我有几个想要访问的远程数据库 但它们位于只能通过 SSH 使用密钥访问的服务器上 In Sequel Pro I connect to this remote DB something like this 我将如何配置我的 Laravel
  • 如何在 WordPress 中设置动态 `home` 和 `siteurl`?

    我使用动态配置多语言设置locale筛选 其中获取子域名来确定语言 function load custom language locale get the locale code according to the sub domain n
  • 用 python 生成/合成声音?

    是否有可能让 python 生成像正弦波这样的简单声音 有可用的模块吗 如果没有 您将如何创建自己的 另外 您是否需要某种主机环境让 python 运行才能播放声音 还是可以通过从终端进行调用来实现 如果答案取决于操作系统 我使用的是 Ma
  • 特征缩放后重新缩放,线性回归

    似乎是一个基本问题 但我需要在梯度下降线性回归的实现中使用特征缩放 获取每个特征值 减去平均值 然后除以标准差 完成后 我希望将权重和回归线重新调整为原始数据 我只使用一个特征 加上 y 轴截距项 使用缩放数据获得权重后 如何更改权重 以便
  • 使用 Wiremock 进行存根 - WithBodyFile 位置除 _files 之外

    Wiremock 文档指出 在中指定的文件的位置与正文文件应该在src 测试 资源 files 我想要文件src test resources Testing ABC Testcase2 myfile xml 有什么办法可以实现这个目标吗
  • 幻灯片内容/页面过渡

    我正在尝试重新创建就像他们在 gimmebar com 上克服的那样 https gimmebar com collection 4ecd439c2f0aaad734000022 front end styleguides 单击图像时 当前
  • 查找 Python 模块的源代码

    我使用 PyCharm 作为我的编辑器 似乎它的表现不佳某些子模块 https youtrack jetbrains com issue PY 13124 namely numpy random normal 不要灰心 我找到了哪里nump
  • 自定义会员资格提供程序中的 Unity 依赖项注入

    我有 ASP NET MVC3 项目 我想在其中使用自定义成员资格提供程序 我还想使用 Unity 来解决我的依赖注入问题 这是来自 Global asax 的代码 protected void Application Start Area
  • android: singleline = true 不适用于 edittext

    我想将编辑文本条目限制为一行 但是当我添加该行时android singleline true 提示消失 输入26个字符后光标向下 这是我的 XML 代码
  • AngularJS 指令从控制器访问属性

    我正在尝试访问控制器函数中指令的属性 然而 当我访问它时 它是未定义的 我注意到如果我做一个简单的计时器它就可以工作 有没有办法仅在指令及其范围准备好并设置为使用之后才执行代码 我摆弄了它 确保您的控制台已打开 http jsfiddle