此处将为大家介绍关于JavaScript–主干:在视图中使用模型的数据和函数的详细内容,并且为您解答有关javascript个人主页的相关问题,此外,我们还将为您介绍关于AndroidWebview和
此处将为大家介绍关于JavaScript – 主干:在视图中使用模型的数据和函数的详细内容,并且为您解答有关javascript个人主页的相关问题,此外,我们还将为您介绍关于Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用、href=“javascript:”vs href=“javascript:void(0)”、JavaScript - 基础入门.0002.JavaScript 快速使用、JavaScript .prototype 如何工作? - How does JavaScript .prototype work?的有用信息。
本文目录一览:- JavaScript – 主干:在视图中使用模型的数据和函数(javascript个人主页)
- Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用
- href=“javascript:”vs href=“javascript:void(0)”
- JavaScript - 基础入门.0002.JavaScript 快速使用
- JavaScript .prototype 如何工作? - How does JavaScript .prototype work?
JavaScript – 主干:在视图中使用模型的数据和函数(javascript个人主页)
我的模型看起来像这样:
countries.coffee
define [ 'underscore' 'backbone' 'parse' ],(_,Backbone,Parse) -> 'use strict'; class CountriesModel extends Parse.Object countries: ['GB','US','FR','JP','WL','ZM','NG'] returnCode = (code) -> return code
我的看法如下所示:
country.coffee
define [ 'jquery' 'underscore' 'backbone' 'templates' 'models/projects' 'models/countries' ],($,_,JST,CountriesModel,ProjectModel) -> class CountryView extends Backbone.View ... console.log countries returnCode(4)
我正在将CountriesModel注册为依赖关系,但是当我调用该函数或记录这些国家时,我会收到以下错误:
Uncaught ReferenceError: returnCode is not defined
我无法解决我在做错什么.任何帮助是赞赏.提前致谢!
UPDATE
我已经更新了上面的代码,以提供更多的上下文.
我正在尝试创建一个可重用的模型(CountriesModel),所以我可以在我的应用程序的不同视图上访问该国家数组和returnCode函数.但是,我无法在CountryView上找到如何访问它们.
我的CountryView已经需要一个ModelModel模型,我可以像这样调用ProjectModel中的函数和数组:
this.model.exampleArray
this.model.exampleFunction()
我无法解决我如何从CountriesModel调用函数或数组.
任何人知道我在做错什么?
解决方法
我不知道coffeescript,但我会详细说明使用Javascript.
答案确实在技术上是通过options参数将模型传递给实例化过程中的视图.
我认为使用Presenter对象来管理特定视图组是一个好主意.该对象将实例化与之相关的视图,正如您所提及的那样,允许将countryModel的实例注入此演示者.
想象一下,假设您有一个webapp,可以为需要您描述的模型的地方呈现地图和列表.你可以看到如下代码:
var countriesModel = new CountriesModel(); var headerPresenter = new HeaderPresenter(); var mapPresenter = new MapPresenter(countriesModel); var listPresenter = new ListPresenter(countriesModel);
会发生什么是您只将模型实例化一次,并将实例注入需要它的演示者.
在演示者对象中,您可以立即访问在传递的模型上设置的属性/方法.
这种方法允许您快速识别哪些演示者需要可重复使用的模型.
如果您需要新的演示者中的组件,也很容易将其传入.
然后,在演示者中,您仍然可以选择特定要发送模型的视图.
例如.名单主持人:
function listPresenter(countriesModel){ this.listView = new ListView({ "model": countriesModel); //More views can be added with the same model instance };
从视图或演示者中,您可以在模型上收听事件,执行其方法并重新呈现视图.
个人我从演示者管理这个逻辑,因为这是我使用其他注入的服务和组件来执行的地方.服务器调用或对于不同视图可能是常见的特定计算.通过将事件聚合器传递给每个视图实例,可以轻松处理不同视图的此常用逻辑.视图触发自定义事件以执行所需的操作,并且演示者监听自定义事件,执行所需的逻辑并重新呈现视图.
我更喜欢保持视图清晰,专注于DOM交互/ DOM事件绑定.
Sidenote:Backbone Marionette提供了一个应用级别的事件聚合器,可以节省您将事件聚合器传递给每个视图的痛苦.
它也是一个非常方便的lib,通过使用如下语法从演示者呈现视图:
var someView = new SomeView(); var region = new Marionette.Region({ el: "#some-region" }); region.show(someView);
通过使用Marionette区域重新显示视图是内存安全的.
希望这是有帮助的.
Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用
在 Android 的开发过程中、遇到一个新需求、那就是让 Java 代码和 Javascript 代码进行交互、在 IOS 中实现起来很麻烦、而在 Android 中相对来说容易多了、Android 对这种交互进行了很好的封装、我们可以很简单的用 Java 代码调用 WebView 中的 js 函数、也可以用 WebView 中的 js 来调用 Android 应用中的 Java 代码。
案例主要包含了:
- Html 中调用 Android 方法
- Android 调用 JS 方法无参数
- Android 调用 JS 方法有参数
- Android 调用 JS 方法有参数且有返回值处理方式 1
- Android 调用 JS 方法有参数且有返回值处理方式 2(Android4.4 以上)
1:创建 JS 对象
webView.addJavascriptInterface(new JsInterface(), "obj");
public class JsInterface {
//JS中调用Android中的方法 和返回值处理的一种方法
/****
* Html中的点击事件 onclick
* <input type="button" value="结算" onclick="showToast(''12'')">
* @param toast
*/
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(MainActivity.this, "你的商品价格是:¥"+toast, Toast.LENGTH_SHORT).show();
}
}
function showToast(toast) {
var money=toast*3;
javascript:obj.showToast(money);
}
2:
webView.loadUrl("javascript:funFromjs()");
function funFromjs(){
document.getElementById("helloweb").innerHTML="div显示数据,无参数";
}
3:
webView.loadUrl("javascript:funJs(''Android端传入的信息,div标签中显示,含参数'')");
function funJs(msg){
document.getElementById("hello2").innerHTML=msg;
}
4:
webView.loadUrl("javascript:sum(6,6)");
/***
* Android代码调用获取J是中的返回值
*
* @param result
*/
@JavascriptInterface
public void onSum(int result) {
Toast.makeText(MainActivity.this, "Android调用JS方法且有返回值+计算结果=="+result, Toast.LENGTH_SHORT).show();
}
function sum(i,m){
var result = i*m;
document.getElementById("h").innerHTML= "Android调用JS方法且有返回值--计算结果="+result;
javascript:obj.onSum(result)
}
5:
webView.evaluateJavascript("sumn(6,11)", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
Toast.makeText(MainActivity.this, "返回值"+value, Toast.LENGTH_SHORT).show();
}
});
function sumn(i,m){
var result = i*m;
document.getElementById("hh").innerHTML= "Android调用JS方法且有返回值--计算结果="+result;
return result;
}
注意:
1、Java 调用 js 里面的函数、效率并不是很高、估计要 200ms 左右吧、做交互性很强的事情、这种速度很难让人接受、而 js 去调 Java 的方法、速度很快、50ms 左右、所以尽量用 js 调用 Java 方法
2、Java 调用 js 的函数、没有返回值、调用了就控制不到了
3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString () 函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间
4、网页中尽量不要使用 jQuery、执行起来需要 5-6 秒、最好使用原生的 js 写业务脚本、以提升加载速度、改善用户体验。
注:使用的是本地的 Html 文件,不过在网络链接的 Html 文件也是可以实现的。
源码点击下载
href=“javascript:”vs href=“javascript:void(0)”
##href=“javascript:” vs href=“javascript:void(0)”
可参考
http://www.jb51.net/article/37904.htm
http://stackoverflow.com/questions/3666683/href-javascript-vs-href-javascriptvoid0
JavaScript - 基础入门.0002.JavaScript 快速使用
常用属性:
属性名称 | 属性说明 |
src | 表示包含要执行代码的外部文件,常用来引用外部的 js 文件 |
type | 表示代码使用的脚本语言的内容类型 |
1 2 3 4 5 6 7 8 9 10 11 12 |
|
注意事项:
1. 如果你想弹出一个 </script> 标签的字符串,内部 js 会误解成 Js 代码的结束,可通过 + 连接分解 </script > 将字符串分为两个部分,但是外部引用的 js 是无需加号拼接的
1 2 3 4 5 6 7 8 9 10 11 12 |
|
2. Js 代码越来越庞大时,最好把它另存为一个.js 文件,通过 src 来引用,这样具有维护性高,可缓存 (加载一次,无需加载), 方便未来扩展的特点
1 2 3 4 5 6 7 8 9 10 |
|
3. 对于不支持 JavaScript 平稳的处理方式是通过 <noscript></noscript > 实现?
1 2 3 4 5 6 7 8 9 10 11 |
|
登录乐搏学院官网 http://www.learnbo.com/
或关注我们的官方微博微信,还有更多惊喜哦~
本文出自 “满满李 - 运维开发之路” 博客,请务必保留此出处 http://xmdevops.blog.51cto.com/11144840/1846116
JavaScript .prototype 如何工作? - How does JavaScript .prototype work?
问题:
I''m not that into dynamic programming languages but I''ve written my fair share of JavaScript code. 我不喜欢动态编程语言,但是我写了相当一部分 JavaScript 代码。 I never really got my head around this prototype-based programming, does any one know how this works? 我从来没有真正了解过这种基于原型的编程,有人知道它是如何工作的吗?
var obj = new Object();
obj.prototype.test = function() { alert(''Hello?''); };
var obj2 = new obj();
obj2.test();
I remember a lot discussion I had with people a while back (I''m not exactly sure what I''m doing) but as I understand it, there''s no concept of a class. 我记得很久以前与人们进行过多次讨论(我不确定自己在做什么),但是据我了解,这里没有一个课堂的概念。 It''s just an object, and instances of those objects are clones of the original, right? 这只是一个对象,这些对象的实例是原始对象的副本,对吗?
But what is the exact purpose of this ".prototype" property in JavaScript? 但是,此 “.prototype” 属性在 JavaScript 中的确切目的是什么? How does it relate to instantiating objects? 它与实例化对象有何关系?
Update: correct way 更新:正确的方法
var obj = new Object(); // not a functional object
obj.prototype.test = function() { alert(''Hello?''); }; // this is wrong!
function MyObject() {} // a first class functional object
MyObject.prototype.test = function() { alert(''OK''); } // OK
Also these slides really helped a lot. 这些幻灯片也确实起到了很大作用。
解决方案:
参考一: https://stackoom.com/question/2P2H/JavaScript-prototype 如何工作参考二: https://oldbug.net/q/2P2H/How-does-JavaScript-prototype-work
我们今天的关于JavaScript – 主干:在视图中使用模型的数据和函数和javascript个人主页的分享已经告一段落,感谢您的关注,如果您想了解更多关于Android Webview 和 Javascript 交互,实现 Android 和 JavaScript 相互调用、href=“javascript:”vs href=“javascript:void(0)”、JavaScript - 基础入门.0002.JavaScript 快速使用、JavaScript .prototype 如何工作? - How does JavaScript .prototype work?的相关信息,请在本站查询。
本文标签: