angularjs没有理解范围?
角度v1.2.17 我正在创建一个使用过滤器格式化输出的指令。 我在用另一个指令 我的问题是,当父指令中的值更改时,该指令不会更新DOM 我正在使用angularjs没有理解范围?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,角度v1.2.17 我正在创建一个使用过滤器格式化输出的指令。 我在用另一个指令 我的问题是,当父指令中的值更改时,该指令不会更新DOM 我正在使用范围订阅值变量。$watch app.directive('mdmFormattedOut', ['$filter', 'appSettingsService', function($filter, appSettingsService){ return{ restrict: 'A', replace: true, templ
范围订阅值变量。$watch
app.directive('mdmFormattedOut', ['$filter', 'appSettingsService', function($filter, appSettingsService){
return{
restrict: 'A',
replace: true,
template:'<span ng-bind="valueToDisplay"></span>',
scope:{
value: '=',
datatype: '='
},
link: function(scope){
scope.$watch('value', format());
function format(){
switch(scope.datatype){
case 'date':
scope.valueToDisplay = $filter('date')(scope.value, appSettingsService.dateFormat);
break;
case 'currency':
scope.valueToDisplay = $filter('currency')(scope.value, appSettingsService.currency);
break;
default:
scope.valueToDisplay = scope.value;
break;
}
}
}
};
app.directive('mdmFormattedOut',['$filter','appsetings服务',函数($filter,appsetings服务){
返回{
限制:“A”,
替换:正确,
模板:“”,
范围:{
值:'=',
数据类型:'='
},
链接:功能(范围){
范围.$watch('value',format());
函数格式(){
开关(scope.datatype){
案例“日期”:
scope.valueToDisplay=$filter('date')(scope.value,appsetingsservice.dateFormat);
打破
“货币”一案:
scope.valueToDisplay=$filter('currency')(scope.value,appsetingsservice.currency);
打破
违约:
scope.valueToDisplay=scope.value;
打破
}
}
}
};
}]))
如果我用ng bind=“value”
替换ng bind=“value”
则一切正常
有什么问题吗?为什么手动订阅不起作用 首先,据我所知,您的作用域不需要双向绑定
scope:{
value: '@',
datatype: '@'
},
其次,您的模板可能如下所示:
<span>{{valueToDisplay}}</span>
{{valueToDisplay}
首先,据我所知,您的作用域不需要双向绑定
scope:{
value: '@',
datatype: '@'
},
其次,您的模板可能如下所示:
<span>{{valueToDisplay}}</span>
{{valueToDisplay}
首先,据我所知,您的作用域不需要双向绑定
scope:{
value: '@',
datatype: '@'
},
其次,您的模板可能如下所示:
<span>{{valueToDisplay}}</span>
{{valueToDisplay}
首先,据我所知,您的作用域不需要双向绑定
scope:{
value: '@',
datatype: '@'
},
其次,您的模板可能如下所示:
<span>{{valueToDisplay}}</span>
{{valueToDisplay}
函数需要一个回调函数作为第二个参数。
您的代码应该如下所示:
scope.$watch('value', format);
您没有传递回调,而是传递了调用format()
的返回,它是未定义的。
函数需要一个回调函数作为第二个参数。
您的代码应该如下所示:
scope.$watch('value', format);
您没有传递回调,而是传递了调用format()
的返回,它是未定义的。
函数需要一个回调函数作为第二个参数。
您的代码应该如下所示:
scope.$watch('value', format);
您没有传递回调,而是传递了调用format()
的返回,它是未定义的。
函数需要一个回调函数作为第二个参数。
您的代码应该如下所示:
scope.$watch('value', format);
您没有传递回调,而是传递了调用format()
的返回,它是未定义的。
您是如何创建的<代码>
?您是如何创建的<代码>
?您是如何创建的<代码>
?您是如何创建的<代码>
?没错,这肯定不是他的意图。但这不应该是不工作的原因,因为函数仍在启动和更改值。看到这个plunker函数执行一次(因为你显式地调用它)-这并不意味着$watch可以在子任务发生变化时工作并更新数据。不知道我在回答中怎么会错过这个@穆罕默德·马哈拉维:可能是因为这太明显了:)没错,这肯定不是他的意图。但这不应该是不工作的原因,因为函数仍在启动和更改值。看到这个plunker函数执行一次(因为你显式地调用它)-这并不意味着$watch可以在子任务发生变化时工作并更新数据。不知道我在回答中怎么会错过这个@穆罕默德·马哈拉维:可能是因为这太明显了:)没错,这肯定不是他的意图。但这不应该是不工作的原因,因为函数仍在启动和更改值。看到这个plunker函数执行一次(因为你显式地调用它)-这并不意味着$watch可以在子任务发生变化时工作并更新数据。不知道我在回答中怎么会错过这个@穆罕默德·马哈拉维:可能是因为这太明显了:)没错,这肯定不是他的意图。但这不应该是不工作的原因,因为函数仍在启动和更改值。看到这个plunker函数执行一次(因为你显式地调用它)-这并不意味着$watch可以在子任务发生变化时工作并更新数据。不知道我在回答中怎么会错过这个@MohamedElMahallawy:可能是因为太明显了:)这并没有解决问题,但你还是有道理的。不需要双向绑定!这并没有解决问题,但你还是有道理的。不需要双向绑定!这并没有解决问题,但你还是有道理的。不需要双向绑定!这并没有解决问题,但你还是有道理的。不需要双向绑定!