angular.js - 求解:angular ngModel.$render 值发生变化时,没有自动调用
伊谢尔伦
伊谢尔伦 2017-05-15 16:53:26
0
1
519

最近要用angular做一个所见即所得的编辑器,在自定义ngModel的$render方法式,出现问题。代码如下:

html部分:

angular部分:

angular.module('myApp',[]) .controller('EditController',function($scope){ $scope.vm={ content:'' }; }) .filter('trustAsHtml',function($sce){ return function(content){ return $sce.trustAsHtml(content); } }) .directive('editBox',function(){ return { restrict:'EA', require:'ngModel', link:function(scope,element,attr,ngModelCtrl){ if(!ngModelCtrl)return; //覆盖默认的$render方法 ngModelCtrl.$render=function(){ element.html(ngModelCtrl.$viewValue); }; //向formatters流水线增加一个格式化方法 ngModelCtrl.$formatters.unshift(function(value){ console.log(value); return value; }); //绑定输入事件监听,当输入时,改变ngModel的值 element.bind('input',function(){ scope.$apply(function(){ ngModelCtrl.$setViewValue(element.html()); }); }); } } });

按照教程上的说法,当viewValue的值发生变化时,ngModelCtrl.$render会被调用,包括formatters,parsers这一系列的流水线。我也是照教程上写的,但只有在指令初始化的时候render及formatters被调用了一次,然后输入时并会没有被调用,难道需要手动调用render吗,请各位大神赐教。

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

membalas semua (1)
phpcn_u1582

Adakah anda pasti ada acara yang dipanggiljavascriptdalaminput? Menurut ulasan anda, anda harus memantau acara sepertikeyup,keydown,change

    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!