当前位置: 首页 > 面试题库 >

从内部指令监视控制器模型值

封俊艾
2023-03-14
问题内容

我正在尝试$viewValue从指令内部监视控制器的角度。

小提琴:http :
//jsfiddle.net/dkrotts/TfTr5/5/

function foo($scope, $timeout) {
    $scope.bar = "Lorem ipsum";

    $timeout(function() {
        $scope.bar = "Dolor sit amet";
    }, 2000);
}

myApp.directive('myDirective', function() {
    return {
        restrict: 'A',
        require: '?ngModel',
        link: function (scope, element, attrs, controller) {
            scope.$watch(controller.$viewValue, function() {
                console.log("Changed to " + controller.$viewValue);
            });
        }
    } 
});

照原样,$ watch函数不能从控制器内部捕获2秒后完成的模型更改。我想念什么?


问题答案:

$watch接受要在作用域中监视的属性的“名称”,即要求它监视值。现在将attrs.ngModel其更改为观看返回“
bar”的手表scope.bar。您可以按原样或使用的方式获取值,scope[attrs.ngModel]就像scope["bar"]再次说出的那样,与相同scope.bar

scope.$watch(attrs.ngModel, function(newValue) {
    console.log("Changed to " + newValue);
});

为了澄清user271996的注释:scope.$eval,因为您可以将对象符号传递到ng-model属性中。即ng- model="someObj.someProperty"哪个scope["someObj.someProperty"]是无效的,因为无效。scope.$eval用于将字符串评估为实际对象,从而scope["someObj.someProperty"]成为scope.someObj.someProperty



 类似资料:
  • 问题内容: 我知道a中的a 可以共享到中的链接函数。 例如,在这段代码中,我可以从已声明的控制器调用一个函数,以在浏览器控制台上打印“ Hello World”: 好的,这很好。 我的问题是 : 在这种方法中,控制器和指令之间共享的是 SAME 范围吗? 使用这种方法会有什么后果?让我们假设我 不会 仅在中操纵元素。 我真的需要避免在此操作DOM元素吗?即使,等都是一样的吗? 这些是我在Angul

  • CodeIgniter 的开发基于 MVC(模型-视图-控制器)设计模式。MVC 是一种 用于将应用程序的逻辑层和表现层分离出来的软件方法。在实践中,由于这种分离 所以你的页面中只包含很少的 PHP 脚本。 模型 代表你的数据结构。通常来说,模型类将包含帮助你对数据库进行增删改查的方法。 视图 是要展现给用户的信息。一个视图通常就是一个网页,但是在 CodeIgniter 中, 一个视图也可以是一

  • 问题内容: 我创建了一个服务来隔离业务逻辑,并将其注入需要信息的控制器中。我最终要做的是让控制器能够监视服务中的值,这样我就不必进行广播/通知或复杂的消息传递解决方案,就可以将所有控制器的数据更改通知给控制器。服务。 我创建了一个plnkr,展示了我要执行的操作的基本概念。 http://plnkr.co/edit/oL6AhHq2BBeGCLhAHX0K?p=preview 可以让控制器监视服务

  • 问题内容: 我可能会考虑将其完全倒退,但是我正在尝试制作三个嵌套指令,让它们称为:屏幕,组件和小部件。我希望窗口小部件能够触发组件中的某些行为,从而触发屏幕中的某些行为。所以: 我可以使用来在小部件的链接fn中要求父组件,但是如何进一步使组件控制器访问其包含的屏幕呢? 我需要的是WHAT in组件,因此,当您单击小部件的按钮时,它会发出“ screeny!”警报。 谢谢。 问题答案: 您可以通过以

  • 我需要修改我的代码,使它成为一个模型-视图-控制器。因为我是一个完全的编程新手,如果我诚实的话,我会头疼。任何帮助如何做到这一点将不胜感激。 *在一个牧场上有200只忙碌的绵羊。这群羊由95只白羊、60只黑羊和45只白黑羊组成。牧羊人现在想把它们分开,这样相应的羊毛就可以按颜色剪了。帮他写一个小脚本,这样他就可以更好地点他的羊了。请使用变量、数组、数学运算符和函数实现前三点。提示:为了更好地概述,

  • 问题内容: 以下是我的html模板: 下面是我的代码: 为什么我会收到“ 未定义 ”而不是“ 某些消息 ” 下面是一个小提琴 http://jsfiddle.net/j2K7N/27/ 问题答案: 您的代码几乎是正确的,但是这里有几个问题: 在这里,您从控制器传递函数,该函数带有一个未定义的参数,该参数会导致警报消息带有“未定义”文本。我建议将HTML代码修改为: 请注意,我将传递为变量而不是函数