javascript - 向 $resource 原型(prototype)添加一个函数

标签 javascript angularjs prototype

我正在尝试向 Angular $resource 添加一个 View 函数。我通过原型(prototype)将它添加到 $resource 但由于某种原因,原型(prototype)函数中的“this”引用不正确,因此所有属性都未定义。奇怪的是,尽管在 console.log 中,this 似乎具有正确返回所需的所有属性。

http://plnkr.co/edit/YsTlAztjEKjn3piQAem2?p=preview

app.factory("Now", function($resource) {

  var Now = $resource("http://date.jsontest.com/");

  Now.prototype.$dateTime = function() {
    console.log("2", this); // this has date and time properties, good
    return this.date + " " + this.time;
  };

  return Now;
});

app.controller("TestController", function(Now) {
  var now = new Now();
  now.$get();
  console.log("1", now); // prototype has the $dateTime function!
  console.log("3", now.$dateTime()); // but it returns undefined, bad
});

最佳答案

实际上,您的错误是您在资源返回数据之前调用了 $dateTime。

查看此 plunk

我上面的答案似乎有效的唯一原因是它正在被插值,当资源最终返回时,datetime 函数被再次调用。但是如果你让代码保持不变,它仍然会失败

关于javascript - 向 $resource 原型(prototype)添加一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23899085/

相关文章:

javascript - 使用 SUM 或 MINUS MySQL 插入重复键更新

javascript - 将过滤器的值作为 Angular 中的 js 函数的参数传递

javascript - AngularJS 中多个指令的一个声明

javascript - Angular 选项选择显示隐藏 Angular 重复

javascript - 为对象批量创建方法

javascript - John Resig 简单继承属性的奇怪问题

javascript - 将本地存储从 swift 注入(inject)到 WKWebview

javascript - Bootstrap 导航栏折叠 - 如何通过点击关闭

javascript - 标识符如何既已声明又未定义?

javascript - jQuery + 扩展 Object.prototype = "c.replace is not a function"