我正在尝试创建一个能够获得BOTH模型对象和字符串的angular指令 如果指令得到一个字符串,它只输出HTML,但如果它是一个模型,该指令将观察模型的变化并分别输出数据。
我曾尝试使用下一个代码:
App.directive('iso2symbol', function () {
return {
restrict: 'E',
replace: true,
link: function ($scope, $element, $attrs) {
var curIsoObj = $scope.$eval($attrs.curIso);
//this is object it may change
if (typeof curIsoObj !== 'undefined') {
console.log('not a text');
$scope.$watch('curIso', function (value) {
console.log(value);
});
}
},
template: '<span>{{currencySymbol}}</span>'
}
}]);
这不起作用,我用Google搜索了很长时间,但我找不到问题....
这里是JSfiddle的链接,我在其中设置了DEMO
答案 0 :(得分:0)
小心你正在看的东西。
根据您的监视功能,您正在观看$ scope.carUso,它实际上不是范围对象。
你应该看着$scope.$watch(function(){return $scope.$eval($attrs.curIso);}, function (value) {
$scope.txt = value;
});
答案 1 :(得分:0)
试试这个:
App.directive('iso2symbol', function () {
return {
restrict: 'E',
replace: true,
require: 'ngModel',
scope: {
curIso: '='
},
link: function ($scope, $element, $attrs) {
$scope.$observe('curIso', function(newValue, oldValue){
var curIsoObj = newValue;
// Do your test now to see if it's undefined,
// a string, or generic object.
// (the first time it will likely be undefined)
}
},
template: '<span>{{currencySymbol}}</span>'
}
}]);