Я пытаюсь создать угловую директиву, которая сможет получить ОБА объект модели и строку.
если директива получает строку, она просто выводит 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>'
}
}]);
Это не работает, я долго гуглил и не нашел проблемы....
Вот ссылка на JSfiddle, где я установил DEMO
2 ответа
Будьте осторожны с тем, что вы смотрите.
В соответствии с вашей функцией часов вы смотрите $scope.curIso, который на самом деле не является объектом области.
Ты должен смотреть
$scope.$watch(function(){return $scope.$eval($attrs.curIso);}, function (value) {
$scope.txt = value;
});
Попробуй это:
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>'
}
}]);
Похожие вопросы
Новые вопросы
angularjs
Используйте для вопросов об AngularJS (1.x), JavaScript-фреймворке с открытым исходным кодом. НЕ используйте этот тег для Angular 2 или более поздних версий; вместо этого используйте тег [angular].