指令未在$ watch上执行

简单解决方案

我有点挣扎,我.directive想做的是强制/或某种方法,以便在值更改时调用该指令。现在,只有在刷新浏览器时,该值才会更改。但是,我希望该值在被其他服务更改后可以动态替换。

这是控制器

$scope.status = 'warning';

这是HTML

<tr>
   <th>status</th>
   <td><icon-selector filterby="status"></icon-selector></td>
</tr>

这是指令

angular.module('myApp')
.directive('iconSelector', function ($compile, $timeout) {

    var linkingFunction = function (scope, element, attrs) {
        scope.$watch('filterby', function () {
            if (scope.filterby === 'OK') {
                element.replaceWith('<p>Running OK</p>');
            } else {
                element.replaceWith('<p>Not running</p>');
            }
        });
    };

    return {
        restrict: 'E',
        scope: {
            filterby: '=filterby'
        },
        link: linkingFunction
    };
});

现在,如果我设置$scope.status = 'danger';$watch在地方,我希望在'指令的功能,可以再次执行但没有得到执行,它只得到执行时,页面重新加载。

有人可以告诉我我在做什么错。

皮埃尔·盖瓦莱特

您的监视触发器将替换指令元素。

因此,基本上,在第一个触发器之后,您要替换的元素仍然是指令元素,但是,它不再存在于文档中,因为您已经第一次替换了它。好笑,不是吗?

为什么不仅要替换指令中的文本(或确实需要内部html),而不是替换整个元素(绝对不要即时替换指令元素,只有有角度的内部编译才有“权利”) )

编辑:示例:

angular.module('myApp')
    .directive('iconSelector', function () {
        return {
            restrict: 'E',
            replace : true,
            template : '<span>{{message}}</span>',
            scope: {
                filterby: '='
            },
            link: function ($scope, $element, $attrs) {
                $scope.$watch('filterby', function (filterby) {
                    if (filterby === 'OK') {
                        $scope.message = 'Running OK';
                    } else {
                        $scope.message = 'Not running';
                    }
                });
            }
        };
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

范围更改未在指令中执行代码

来自分类Dev

CLI指令未在Linux内核模块中执行

来自分类Dev

Angular指令未在ES6上编译

来自分类Dev

AngularJS视图未在指令内的ng-show上更新

来自分类Dev

为什么未在字段上设置验证指令/属性?

来自分类Dev

AngularJS指令未在IE 11中更新textarea上的ng-model

来自分类Dev

angularjs指令手表未在对象函数属性上触发

来自分类Dev

Angular中的指令未在$ state.go上呈现,但在初始加载时

来自分类Dev

AngularJS指令双向绑定变量更改未在父作用域上触发$ digest

来自分类Dev

属性未在angular js中的自定义指令上设置

来自分类Dev

在DOM上执行多个指令

来自分类Dev

函数未在后台线程上执行

来自分类Dev

jQuery睡眠未在ajax请求上执行

来自分类Dev

异步等待未在预期的线程上执行

来自分类Dev

BackgroundWorker RunWorkerCompleted 未在 UI 线程上执行

来自分类Dev

$ watch事件未在最初不可见的元素上触发

来自分类Dev

从指令添加值时,数组上的$ scope。$ watch不更新

来自分类Dev

从指令添加值时,数组上的$ scope。$ watch不更新

来自分类Dev

ngModel未在指令中绑定

来自分类Dev

在指令中使用$ watch

来自分类Dev

在指令中使用$ watch

来自分类Dev

ShutdownHook代码未在System.exit(0)上执行

来自分类Dev

npm软件包未在linux上执行

来自分类Dev

HTML / jQuery加载/加载未在iOS上执行

来自分类Dev

应用程式未在旧版iOS SDK上执行

来自分类Dev

PHP脚本未在Apache服务器上执行

来自分类Dev

LINQ-to-Entities WHERE条件未在SQL Server上执行

来自分类Dev

PHP脚本未在Apache服务器上执行

来自分类Dev

GAE Python-Cron作业未在目标模块上执行

Related 相关文章

热门标签

归档