【发布时间】:2014-09-25 09:26:59
【问题描述】:
我正在为一些可能非常简单的事情而苦苦挣扎,但在 Stackoverlow 上搜索数小时并没有帮助。
我将 Trevor 爵士与 MEANJS 一起使用。特雷弗爵士将自身应用于 textarea 字段并将其内容保存为 JSON 字符串。
Sir Trevor 正在将其内容保存到字段 Content,该字段在 Mongoose 架构中设置为 Object 类型。
创作效果很好,一切都按预期保存。
但是,在编辑时,数据无法正确显示。文本字段被分配data-ng-model="article.content" [模型中的“内容”字段],但显示为[object Object],因此当 Trevor 爵士尝试解析该值时,它会出错。
我尝试使用带有$formatters 的指令来更改值:
<textarea data-ng-model="article.content" id="content"
class="form-control st-instance" placeholder="Content" stRaw>
</textarea>
...这里是指令:
articleApp.directive('stRaw', function(){
return {
restrict: 'A',
require: 'ngModel',
link: function(scope, element, attr, ngModel) {
function stringIt(val) {
return JSON.stringify(val);
}
ngModel.$formatters.push(stringIt);
}
};
});
但似乎从未触发过该指令[我在链接函数中尝试了console.log,但从未看到任何东西]。
通过更改架构类型String,然后在代码中一遍又一遍地使用stringify,我能够使其正常工作。这看起来很草率,造成了过度膨胀,并且在尝试在实际视图页面上迭代时也带来了挑战[它被视为String——无法弄清楚如何解析]。
我假设我需要在呈现之前以某种方式捕获 article.content 属性并将值更改为字符串。这是正确的方向吗?
【问题讨论】:
-
你能给我们一个console.log(article.content)
-
@ma08 - 在服务器端代码上做一个console.log(article.content) [根据id查找文章] 返回“{ data: [ { data: [Object], type: 'heading' }, { data: [Object], type: 'text' } ] }" ... 但是,从角度端运行相同的 console.log [在用于填充编辑屏幕的代码中],它来了返回未定义。
-
在客户端?
-
嗨@ma08 - 我输入得太早了,所以不得不编辑我的回复。 =) 在我将 $scope.article 设置为从服务器端查询中找到的文章的代码中运行 console.log(article.content) 会导致未定义。在 firebug 中检查 $scope 显示内容填充了具有预期键值对的对象。
-
如果有任何不同,其余字段会正确显示——标题、slug、标签等。这真的只是我遇到的挑战。
标签: json angularjs express mongoose meanjs