从本机代码(iOS)调用Javascript函数

时间:2015-05-19 07:41:27

标签: javascript objective-c angularjs cordova

This is how my storyboard looks like

这是我的故事板。我在cordova应用程序的侧面菜单中使用了SWRevealViewController插件。添加了"主视图控制器"作为对Last视图控制器的类引用(在nav-bar中有项目)。

在我的Cordova视图中从左向右滑动将显示Sidemenu。点击我在

中保存选定的行值
 -(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // menuItems is an array using which I'm populating the sidemenu
    NSString *  str = [menuItems objectAtIndex:indexPath.row];
}

我只想将此值传递给javascript函数。

在index.html中定义了我的javascript函数

    <script >
    (function () {
     window.execute = function () {
     alert(" machi");
     var el = document.getElementById('search');
     var scope = angular.element(el).scope();
     scope.$apply(function() {
                  scope.execute();
                  });

     }
     })();
    </script>

    calling this function using
      NSString *jsCommand = [NSString stringWithFormat:@"execute()"];
    [self.webView stringByEvaluatingJavaScriptFromString:jsCommand];

1 个答案:

答案 0 :(得分:0)

尝试将您的原生代码更改为:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // menuItems is an array using which I'm populating the sidemenu
    NSString *  str = [menuItems objectAtIndex:indexPath.row];
    NSString *jsCommand = [NSString stringWithFormat:@"execute('%@')", str];
    [self.webView stringByEvaluatingJavaScriptFromString:jsCommand];
}

你的javascript函数声明:

 window.execute = function (str) {...}

您会在 str 函数参数中找到传递的值。