我有一个带有模板的指令
<div>
<div ng-repeat="item in items" ng-click="updateModel(item)">
<div>
我的指令声明为:
return {
templateUrl: '...',
restrict: 'E',
require: '^ngModel',
scope: {
items: '=',
ngModel: '=',
ngChange: '&'
},
link: function postLink(scope, element, attrs)
{
scope.updateModel = function(item)
{
scope.ngModel = item;
scope.ngChange();
}
}
}
我想ng-change
在单击某个项目并且其值foo
已经更改时调用。
也就是说,如果我的指令实现为:
<my-directive items=items ng-model="foo" ng-change="bar(foo)"></my-directive>
我希望bar
在的值foo
已更新时致电。
使用上面给出的代码,ngChange
可以成功调用,但是将使用旧值foo
而不是新的更新值来调用它。
解决该问题的一种方法是ngChange
在超时值内部调用超时,以在将来某个时刻执行该超时foo
。但是这种解决方案使我无法控制应该执行的顺序,并且我认为应该有一个更优雅的解决方案。
我也可以foo
在父级作用域中使用观察程序,但是此解决方案并没有真正实现该ngChange
方法,并且有人告诉我观察程序是内存消耗大的用户。
有没有一种方法可以使ngChange
同步执行而没有超时或观察者?
示例:http://plnkr.co/edit/8H6QDO8OYiOyOx8efhyJ?p
= preview
如果你需要ngModel
,你可以叫$setViewValue
上ngModelController
,它隐评估ng- change
。链接功能的第四个参数应该是ngModelCtrl。以下代码将对ng-change
您的指令起作用。
link : function(scope, element, attrs, ngModelCtrl){
scope.updateModel = function(item) {
ngModelCtrl.$setViewValue(item);
}
}
为了使您的解决方案起作用,请从myDirective的孤立范围中删除ngChange和ngModel。
这是一个小问题:http
://plnkr.co/edit/UefUzOo88MwOMkpgeX07?
p=
preview
创建自定义指令 第一步,创建一个自定义命令类文件,新建application/common/command/Hello.php <?php namespace app\common\command; use think\console\Command; use think\console\Input; use think\console\input\Argument; use think\con
自定义指令可以使用 macro 指令来定义, 这是模板设计者所关心的内容。 Java程序员若不想在模板中实现定义指令,而是在Java语言中实现指令的定义, 这时可以使用 freemarker.template.TemplateDirectiveModel 类来扩展 (请参考 后续章节)。 基本内容 宏是有一个变量名的模板片段。可以在模板中使用宏作为自定义指令, 这样就能进行重复性的工作。例如,创建
问题内容: 我收到此错误: sum()得到了意外的关键字参数’out’ 当我运行此代码时: 除了对批处理进行循环并编辑源代码之外,是否可以实现自定义指标? 问题答案: 问题是,并没有与NumPy阵列但无论哪种Theano或TensorFlow张量。这就是为什么您会收到此错误。 您可以定义自定义指标,但必须记住,其参数是那些张量,而不是NumPy数组。
主要内容:实例,实例,钩子,实例,实例除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点: 实例 <div id="app"> <p>页面载入时,input 元素自动获取焦点:</p> <input v-focus> </div> <script> // 注册一个全局自定义指令 v-focus Vue.d
主要内容:实例,实例,钩子,实例,实例,实例除了默认设置的核心指令( v-model 和 v-show ), Vue 也允许注册自定义指令。 下面我们注册一个全局指令 v-focus, 该指令的功能是在页面加载时,元素获得焦点: 实例 <div id="app"> <p>页面载入时,input 元素自动获取焦点:</p> <input v-focus> </div> <script> const app = Vue.createApp({}
简介 除了默认设置的核心指令( v-model 和 v-show ),Vue 也允许注册自定义指令。注意,在 Vue2.0 里面,代码复用的主要形式和抽象是组件——然而,有的情况下,你仍然需要对纯 DOM 元素进行底层操作,这时候就会用到自定义指令。下面这个例子将聚焦一个 input 元素,像这样: Vue.directive('focus', { inserted: function (el)