从 JSON 转换 "attrs.$observe" 返回值时的 "Unexpected end of JSON" 输入

"Unexpected end of JSON" input when converting a "attrs.$observe" returned value from JSON

我正在设置一个充当 <select></select> 元素的指令,但在附加多个 <li></li> 元素的地方有一些调整。

在我的 DIRECTIVE 中,我有这个...

baseTemplate.js

scope: {
     options: '@',
},
link: (scope, element, attrs) => {    
    // options = ['a', 'b', 'c'];    
    attrs.$observe('options', value => {
         value = angular.fromJson(value);
         scope.stored_options = value;
    })
}

attrs.$observe返回的valuejsonvalue = '["a", "b", "c"]';到目前为止,没有发生错误。

但是,当我使用 angular.fromJson() 方法将其转换为 object 时。发生错误说 "Unexpected end of JSON"

尽管该值已转换为 OBJECT,但我仍然可以使用它。

我只是讨厌控制台内部发生错误,而从技术上讲,没有错误。

与其将属性评估为 JSON,不如考虑:

scope: {
     options: '@',
},
link: (scope, element, attrs) => {    
    // options = ['a', 'b', 'c'];    
    scope.stored_options = scope.$eval(attrs.options);
}

$eval 的 JavaScript 类解析器比 JSON 解析器更通用。

有关详细信息,请参阅